我希望正则表达式找到不以172.0.0.0开头的IP地址。
我写了一些正则表达式^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$
,它找到了所有的IP地址。
答案 0 :(得分:2)
.
是匹配所有内容的字符。要在此上下文中使用它,您必须将其转义。
另外要将它限制为仅以172开头的ip地址,只需将其硬编码到你的正则表达式中就像这样:
^172\.\d{1,3}\.\d{1,3}.\d{1,3}$
然后您可以使用此功能过滤掉已经进行的任何匹配。
或者,如果您没有从IP地址列表开始,您可以使用负面预测直接抓取它们。
^(?!172)\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}$
要小心一点,这可能比ip地址更匹配 - 例如400.660.226.602
将被捕获 - 即使真正的IP4地址不包含高于255
的数字。也许这不会影响您的使用案例 - 但这是值得记住的事情。
根据以下评论,如果您要在文档中的任何位置搜索IP地址,而不是按自己的行搜索,请使用\b
代替^
和$
\b(?!172)\d{1,3}\.\d{1,3}\.\d{1,3}.\d{1,3}\b
例如,这将匹配日志格式,其中包含消息中的IP地址而不是它自己的行。
[10:01:22]来自
10.14.242.211
的连接确定。
答案 1 :(得分:0)
答案 2 :(得分:0)
试试这个:
^172\.(?:\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){2}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b|null)$
它不仅检查ip地址以172开头,还检查有效的ip地址,即每个值不能超过255