簡體   English   中英

如何在Python中不帶換行符的回車符匹配

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM