【发布时间】:2017-02-13 04:29:14
【问题描述】:
所以我试图解析一个文件,我有以下代码:
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”不匹配这是怎么回事?
【问题讨论】:
-
.在正则表达式中表示任何字符。要匹配.,请在正则表达式中使用\.。 -
我无法重现此问题 - 第二个示例运行良好。
-
“这不匹配”字符串在您的帖子中包含一个扩展字符:em-dash。根据您的语言环境,这是一个字符,还是被认为超过 1 个? (即 UTF-8。)
-
三个单独的字符sounds about right。您的 Python 构建不支持 Unicode。您可能想edit您的帖子并添加您正在使用的版本。
-
是的,我后来知道了。 @JimmyKim 所以你的意思是
[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3} ... C匹配第二个?
标签: python regex python-2.7