什么是否定的先读

?!通过将以括号()括起来的正则表达式以不包含指定字符串(负预读)为条件进行匹配。另外,也可以在否定预读的前后连接其他模式来描述。

使用否定预读的例子

在下面的例子中,否定的前置词(?!通过在~)前后连接表示句头的^和表示句尾的$来搜索行。

不含〜

与不包含字符串“abc”的行匹配。

^(?!.*abc).*$

不包含〜或〜

匹配不包含“abc”或“efg”字符串的行。

^(?!.*(abc|efg)).*$

如果要增加条件,请添加每个单词以|分隔。

不是从〜开始的

匹配以字符串“abc”开头的行。

^(?!abc).*$

〜で終わらない

匹配以字符串“abc”结尾的行。

^(?!.*abc$).*$

包含〜但不包含~

与包含“abc”但不包含“def”的行匹配。

^(?=.*abc)(?!.*def).*$

?=表示肯定前读。

总结

使用否定条件可使搜索范围之外的匹配成为可能。此外,通过添加|或()分隔条件,可以进一步缩小搜索范围。利用否定正则表达式进行更有效的搜索。

更多推荐