我想在python中使用正则表达式来查找回车\ r在字符串中没有以下换行\ n,因此可能是错误。如何匹配回车和python中没有换行
不过,我正则表达式匹配永诺,我不知道为什么:
>>> import re
>>> cr = re.compile("\r[^\n]", re.X)
>>> rr= rege.search("bla")
>>> rr
<_sre.SRE_Match object at 0x0000000003793AC0>
如何将正确的语法是什么样子?
我想在python中使用正则表达式来查找回车\ r在字符串中没有以下换行\ n,因此可能是错误。如何匹配回车和python中没有换行
不过,我正则表达式匹配永诺,我不知道为什么:
>>> import re
>>> cr = re.compile("\r[^\n]", re.X)
>>> rr= rege.search("bla")
>>> rr
<_sre.SRE_Match object at 0x0000000003793AC0>
如何将正确的语法是什么样子?
您可以使用negative lookahead:
\r(?!\n)
在Python
:
import re
rx = r'\r(?!\n)'
for match in re.finditer(rx, string):
# do sth. here
您使用详细模式(re.X
)和非原始字符串。这意味着你的正则表达式有一个文字回车符和换行符。由于这些是空白字符,而且处于详细模式,所以字符类外的回车完全被忽略。你的正则表达式实际上是r'[^\n]'
,匹配任何非换行字符。
使用原始字符串。正如其他人所建议的那样,负面预测对于“未遵循”断言也会更好:
r'\r(?!\n)'
阅读有关“预测”的内容。 –
具体来说,一个负面的前瞻。 – Jan
对于语法错误,你是对的。不过,正如我的脚本中所做的那样,它仍然无法正常工作。我很少使用lookaheads。如果有帮助,会做,但我的代码不能正常工作的解释是什么? – aldorado