如何在python中匹配回车和没有换行符

时间:2016-05-23 15:52:17

标签: python regex carriage-return linefeed

我正在尝试在python中使用正则表达式来查找没有后续换行符的字符串中的回车符\ r,因此可能是错误。

然而,我的正则表达总是匹配,我不知道为什么:

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

正确的语法如何?

2 个答案:

答案 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)'