尝试从此字符串中提取日期:
Publisher: Broadway Books; Anniversary, Reprint edition (October 8, 2002)
我想得到这个:October 8, 2002
这是我使用的正则表达式。目标是使它适用于上述格式的任何日期。当我在https://regex101.com/上对其进行测试时,它可以工作,但是在我的代码中返回“ None”。
pattern = re.compile("(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|Dec(ember)?)\s+\d{1,2},\s+\d{4}")
date = pattern.match(tag.get_text())
答案 0 :(得分:5)
您正在使用re.match
,它将检查文本是否与字符串开头的模式匹配。请改用re.search
,它会在字符串中的任意位置查找匹配项。有关更多信息,请参见here。
import re
text = "Publisher: Broadway Books; Anniversary, Reprint edition (October 8, 2002)"
pattern = re.compile(
"(Jan(uary)?|Feb(ruary)?|Mar(ch)?|Apr(il)?|May|Jun(e)?|"
"Jul(y)?|Aug(ust)?|Sep(tember)?|Oct(ober)?|Nov(ember)?|"
"Dec(ember)?)\s+\d{1,2},\s+\d{4}")
print(pattern.match(text)) # prints None
print(pattern.search(text))
print(pattern.search(text).group())
None
<_sre.SRE_Match object; span=(57, 72), match='October 8, 2002'>
October 8, 2002