Regex 需要正则表达式来捕获不包括环回的IP
我想在一个文件中查找所有ip地址。问题是我需要排除127.0.0.1地址。我在LinuxBash中使用grep。 以下是我已经得到的:Regex 需要正则表达式来捕获不包括环回的IP,regex,Regex,我想在一个文件中查找所有ip地址。问题是我需要排除127.0.0.1地址。我在LinuxBash中使用grep。 以下是我已经得到的: [0-9]+.\.[0-9]+\.[0-9]+\.[0-9]+ 实际上,所有子网127.0.0.0/8都是为环回保留的(因此,127.45.78.32也是环回的地址)。因此,要通过regexp解决您的问题,需要首先检查输入字符串是否不匹配: ^127\. 然后检查它是否与普通IP正则表达式匹配。这将执行以下操作: ^(?!127\.0{1,3}\.0{1,3
[0-9]+.\.[0-9]+\.[0-9]+\.[0-9]+
实际上,所有子网127.0.0.0/8都是为环回保留的(因此,127.45.78.32也是环回的地址)。因此,要通过regexp解决您的问题,需要首先检查输入字符串是否不匹配:
^127\.
然后检查它是否与普通IP正则表达式匹配。这将执行以下操作:
^(?!127\.0{1,3}\.0{1,3}\.0{0,2}1$)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
试验
我已将量词更改为{1,3}
(?!127\.0{1,3}\.0{1,3}\.0{0,2}1$)
意味着您不能拥有127.0.0.1
(最终填充一些0
)
((25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)\){3}
用于前三位数字组及其,(25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]?)
用于最后一位数字组
我已经将正则表达式锚定到字符串的开头^
和结尾$
如果要排除所有环回(因此127.*.*.
)
试验
这两个正则表达式基于regex from减去关于非捕获组的部分
这里我只需要测试第一组数字是否不是127
((?!127)
)
此正则表达式已完成,它不接受类似于256.256.256.256
的内容,但它仅适用于IPv4。您尝试了什么?你用的是什么正则表达式?还请注意,您需要避开这些点。提示:使用消极前瞻。@HamZa他向我们展示了他所做的尝试。你用什么语言使用它?如果不等于127.0.0.1,简单地说,是否太麻烦了?@arshajii我的观点是,他已经有了一个正则表达式来匹配IP地址。但这不是这个问题的重点。关键是还要排除特定地址。他是否试图解决这一点?不可以。另一方面,由于127.0.0.127
也是一个有效的环回地址,因此它可能会变得非常复杂。
^(?!127)((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$