如何在python中定义正确的模式/表达式



嗨,我想在"2017年9月10日";在下面的场景中;2017年9月10日Kochkurs im Hiltl";。我将2017年9月10日的模式定义为:pattern = r"W+s+d+,s+d+s+"然而,这是错误的。你知道为什么吗?谢谢:(

此模式的唯一问题是W匹配字母、数字或下划线以外的任何内容(例如,匹配非单词(。您可以将其替换为与单词字符匹配的w

import re
pattern = re.compile(r"W+s+d+,s+d+s+")
print(pattern.search("September 10, 2017 Kochkurs im Hiltl"))
# Output: None
pattern = re.compile(r"w+s+d+,s+d+s+")
print(pattern.search("September 10, 2017 Kochkurs im Hiltl"))
# Output: <re.Match object; span=(0, 19), match='September 10, 2017 '>

问题是因为使用了\W

以下工作如您所料:

s = "September 10, 2017 Kochkurs im Hiltl"
date_str = list(filter(bool, re.split("^(S+s+d+,s+d+)", s)))[0]
print(date_str)

最新更新