[英]Regular Expression Dot not working
所以我試圖解析一個文件,我有以下代碼:
def learn_re(s):
pattern=re.compile("[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3} .")
if pattern.match(s):
return True
return False
這符合“01:01:01.123 - ”; 但是,當我添加一個字符時,它無法工作。 例如,如果我編輯我的代碼,那就是它
def learn_re(s):
pattern=re.compile("[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3} . C")
if pattern.match(s):
return True
return False
這與“01:01:01.123 - C”無法匹配這里發生了什么?
問題是你的 - 是一個unicode角色。 在str
,它實際上表現得更像幾個字符:
>>> print len('—')
3
但是,如果你使用unicode
而不是str
:
>>> print len(u'—')
1
所以,以下將打印True
:
def learn_re(s):
pattern=re.compile("[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3} . C")
if pattern.match(s):
return True
return False
print learn_re(u"01:01:01.123 — C")
請注意,此行為特定於python 2.在python 3中, str
和unicode
合並為單個str
類型,因此不需要這種區別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.