使用python简化正则表达式

2024-04-18 21:02:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要匹配以下日期字符串:

release_date1 = 'July 29, 2016'
release_date2 = 'August 2016'

res = re.match(r'(\w+)\s(\d+),\s(\d+)$', release_date1)
if res:
 datestr = res.group(1) + '-' + res.group(2) + '-' + res.group(3)

res = re.match(r'(\w+)\s(\d+)$', release_date2)
if res:
 datestr = res.group(1) + '-01-' + res.group(2)

目前我有两个单独的正则表达式,我正在寻找简化我的两个正则表达式到一个单一的。有什么建议吗?在


Tags: 字符串rereleaseifmatchgroupresjuly
2条回答

肮脏的解决方案,但两者都匹配:

'\w+\s[\d,\s]*[\d]{4}'

您还可以考虑使用or运算符|,这样会得到更精确的结果:

^{pr2}$

替代方案

release_date1 = 'July 29, 2016'
release_date2 = 'August 2016'

def grab_date(date1):
    # (\d+(?=,\s))? match day follow by (,space) if there is any
    # (?:,\s)? non capturing match (,space) if there day in date
    res = re.match('(\w+)\s(\d+(?=,\s))?(?:,\s)?(\d+)$', date1).groups()
    datestr = res[0] + '-' + str(res[1]).replace('None','01') + '-' + res[2]
    return datestr

print grab_date(release_date1) # July-29-2016
print grab_date(release_date2) # August-01-2016

相关问题 更多 >