首页 > 解决方案 > 如何在python中将变量字符串输入re.search

问题描述

最初,我的日期正则表达式按如下方式工作,例如捕获“2018 年 2 月 12 日”

match = re.search(r'(January|February|March|April|May|June|July|August|September?|October?|November|December)\s+\d{1,2},\s+\d{4}', date).group()

但是我希望它变得更加灵活,并将我的变量字符串输入到我的正则表达式中,但是在查看了许多关于类似问题的 stackoverflow 线程后,我似乎无法让它工作。我是一个新手,所以我不确定出了什么问题。我知道仅仅 MONTHS 是行不通的。谢谢

MONTHS = "January|February|March|April|May|June|July|August|September|October|November|December"

match = re.search(r'(MONTHS)\s+\d{1,2},\s+\d{4}', date).group()

print(match)
'NoneType' object has no attribute 'group'

标签: pythonregexpython-3.x

解决方案


您将 MONTHS 作为匹配字符串的一部分,python 不知道它应该引用存储另一个字符串的变量。

因此,请尝试:

match = re.search(r'(' + MONTHS + ')\s+\d{1,2},\s+\d{4}', date).group()

这将连接(粘在一起)三个字符串,第一位,然后是存储在 MONTHS 变量中的字符串,然后是最后一位。


推荐阅读