正则表达式负面展望未来

时间:2014-04-25 19:42:52

标签: regex

我有这个:

172\.\d{1,3}\.\d{1,3}\.\d{1,3}(?!:|_)

匹配172:

之后的_ IP地址

当应用于172.22.22.22:时,如果我不希望发生匹配,它会在172.22.22.2上匹配。 当我执行cat(?!:|_)之类的操作时,字符串cat_不返回任何匹配项。我错过了一些明显的东西吗?

3 个答案:

答案 0 :(得分:0)

退出,然后检查字符串的结尾:

172\.\d{1,3}\.\d{1,3}\.\d{1,3}(?!:|_)$

Live demo

答案 1 :(得分:0)

您需要使用:

172\.\d{1,3}\.\d{1,3}\.\d{1,3}(?![\d:_])

即。确保负向前瞻仅在所有数字后匹配冒号或下划线。

Working Demo

答案 2 :(得分:0)

您需要使用possessive quantifier来阻止其备份。

172\.\d{1,3}\.\d{1,3}\.\d{1,3}+(?!:|_)
                              ^

DEMO