1

我正在通过 Jim Hollenhorst 的30 分钟正则表达式教程
学习正则表达式 ,我检查了这两个正则表达式在他的软件(Expresso)中提到的标题,我发现它(?=)与文本字符串中的每个位置都匹配一个空字符,并且(?!)总是失败
,我发现我自己很难理解空字符和空匹配。我觉得我已经抓住了它,但同时它似乎是无形的。

所以我希望有人能为我解释“空”匹配(它是如何工作的,以及一些类似的用法或正则表达式)。

谢谢。

4

2 回答 2

4

(?=foo)匹配后面跟的任何位置foo,并且(?!foo)匹配后面跟的任何位置foo。因此,由于每个位置后面都有空字符串——任何两个字符之间都有一个空子字符串,并且任何字符串的开头和结尾都有一个空子字符串——完全(?=)匹配任何位置,并且(?!)根本不匹配任何位置.

于 2013-09-07T06:09:14.380 回答
3

(?=)(?!)分别是正面展望(?=regex)和负面展望的退化案例(?!regex)

(?=)表示输入的下一部分匹配零宽度字符串(相邻字符或最后一个字符与输入结尾之间的点),这始终是正确的。

(?!)表示输入的下一部分不能匹配零宽度字符串,这总是错误的 - 每个字符后面总是没有任何内容。

于 2013-09-07T06:10:58.957 回答