pattern = r'\b[Cc]\b(?![\+\.])
[我正在尝试查找C
或c
后面没有+
,还包括位于字符串末尾的实例。
在线课程的答案正则表达式如下;
pattern = r'\b[Cc]\b(?![\+\.])
但是我不明白为什么它不能像这样;
pattern = r'\b[Cc](?!+.)
谁能解释为什么?
非常感谢您能启发我!
您的原始正则表达式可以简化为\b[Cc]\b(?!\+)
,即:
+
,[当您在xxx c- c# c! c+ ac ca xxx c
上尝试上述正则表达式时:
c
)不匹配(超前失败),c+
)不匹配(“ c”之前没有单词边界,]]ac
)不匹配(“ c”之后没有单词边界,]]ca
)已匹配(之前的单词边界,之后的字词边界,之后没有c
。现在,让我们看看您的第二个正则表达式,在-
之后也没有点,但是此+
必须转义:+
:
\b[Cc](?!\+)
),这次我的测试字符串中第六次出现\b
也匹配,因为第二个模式在c
之后不需要任何单词边界。
因此,总结,是否需要c
后的单词边界取决于您。实际上,您写了c
,因此,“ c”之后的单词边界没有要求。
我建议您在instances with "C" or "c" not followed by "+"
使用在线正则表达式测试器,因为它包含有关尝试过的模式的很好的解释。