2016-05-23 117 views
1

我想在python中使用正则表达式来查找回车\ r在字符串中没有以下换行\ n,因此可能是错误。如何匹配回车和python中没有换行

不过,我正则表达式匹配永诺,我不知道为什么:

>>> import re 
>>> cr = re.compile("\r[^\n]", re.X) 
>>> rr= rege.search("bla") 
>>> rr 
<_sre.SRE_Match object at 0x0000000003793AC0> 

如何将正确的语法是什么样子?

+0

阅读有关“预测”的内容。 –

+0

具体来说,一个负面的前瞻。 – Jan

+0

对于语法错误,你是对的。不过,正如我的脚本中所做的那样,它仍然无法正常工作。我很少使用lookaheads。如果有帮助,会做,但我的代码不能正常工作的解释是什么? – aldorado

回答

1

您可以使用negative lookahead

\r(?!\n) 

Python

import re 
rx = r'\r(?!\n)' 
for match in re.finditer(rx, string): 
    # do sth. here 
1

您使用详细模式(re.X)和非原始字符串。这意味着你的正则表达式有一个文字回车符和换行符。由于这些是空白字符,而且处于详细模式,所以字符类外的回车完全被忽略。你的正则表达式实际上是r'[^\n]',匹配任何非换行字符。

使用原始字符串。正如其他人所建议的那样,负面预测对于“未遵循”断言也会更好:

r'\r(?!\n)'