我有以下字符串
我只在9月12日至14日之间在此工作。我会回来的 在明年5月10日至15日之间。
使用以下正则表达式,我可以捕获字符串的必需部分,即日期后面的月份
(\ w + \ s?)(\ d {1,2} \ s?)-(\ d {1,2})
此正则表达式返回2个完全匹配项
第1场
比赛2
我要使用正则表达式替换在组3之前插入组1。 尽管我可以想到其他方法,但是我找不到使用正则表达式替换的方法。
我计划在python中使用它。
所需的输出应如下所示。
我只在9月12日至9月14日期间在这里工作。我会回来的 在明年5月10日至5月15日之间。
答案 0 :(得分:1)
您可以匹配
(\w+) ?(\d{1,2} ?-)(\d{1,2})
,并用第一组,第二组,再次第一组(插入月份)和第三组代替:
\1 \2\1 \3
https://regex101.com/r/Zcqsr2/1
import re
str = 'I only work between September 12 -14 at this place. I will be back between May 10-15 next year.'
print(re.sub(r'(\w+) ?(\d{1,2} ?-)(\d{1,2})', r'\1 \2\1 \3', str))