我正在尝试在python中使用正则表达式来查找没有后续换行符的字符串中的回车符\ r,因此可能是错误。
然而,我的正则表达总是匹配,我不知道为什么:
>>> import re
>>> cr = re.compile("\r[^\n]", re.X)
>>> rr= rege.search("bla")
>>> rr
<_sre.SRE_Match object at 0x0000000003793AC0>
正确的语法如何?
答案 0 :(得分:1)
您可以使用negative lookahead:
\r(?!\n)
在Python
:
import re
rx = r'\r(?!\n)'
for match in re.finditer(rx, string):
# do sth. here
答案 1 :(得分:1)
您正在使用详细模式(re.X
)和非原始字符串。这意味着你的正则表达式有一个文字回车和换行符。由于这些是空白字符并且您处于详细模式,因此完全忽略字符类外部的回车。您的正则表达式实际上是r'[^\n]'
,匹配任何非换行符。
使用原始字符串。正如其他人所说的那样,对于“未跟随”断言,否定前瞻也会更好:
r'\r(?!\n)'