2016-05-23 21 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)'