Skip to main content
 首页 » 编程设计

python之如何在正则表达式中动态捕获一行文本中的两个日期

2024年08月19日39wayfarer

我有一个每周都会更改的文本:

text = "Weekly Comparison, Week 50 October 28 - November 3, 2016 October 30 - November 5, 2015" 

我正在寻找第 1 年和第 2 年的正则表达式模式。
(两者都会每周更改,因此我需要公式来捕获所有月、日、年)

我的输出应该如下:

2015 = November 5, 2015 
2016 = November 3, 2016 

我使用的框架不允许正则表达式捕获组或拆分,因此我需要专门用于此类字符串的公式。

谢谢!

请您参考如下方法:

代码

根据我原来的评论

See regex in use here

(\w+\s+\d+,\s*(\d+)) 

注意:上面的正则表达式和regex101上的正则表达式不匹配。这是故意的。 Regex101 只能演示替换的输出,因此我在正则表达式前添加了 .*? 以便正确显示预期的输出。


结果

输入

Weekly Comparison, Week 50 October 28 - November 3, 2016 October 30 - November 5, 2015 

输出

2016 = November 3, 2016 
2015 = November 5, 2015 

用法

import re 
regex = r"(\w+\s+\d+,\s*(\d+))" 
str = "Weekly Comparison, Week 50 October 28 - November 3, 2016 October 30 - November 5, 2015" 
for (date, year) in re.findall(regex, str): 
    print year + ' = ' + date