[英]How to match carriage return with no linefeed in python
我正在嘗試在python中使用正則表達式來查找回車符\\ r的字符串,其中沒有后續的換行符\\ n,因此是一個可能的錯誤。
但是,我的正則表達式始終匹配,並且我不知道為什么:
>>> import re
>>> cr = re.compile("\r[^\n]", re.X)
>>> rr= rege.search("bla")
>>> rr
<_sre.SRE_Match object at 0x0000000003793AC0>
正確的語法如何?
您可以使用負數前瞻 :
\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)'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.