选定Regex组的Regex替代

时间:2018-10-12 02:34:52

标签: python regex search replace regex-group

我有以下字符串

  

我只在9月12日至14日之间在此工作。我会回来的   在明年5月10日至15日之间。

使用以下正则表达式,我可以捕获字符串的必需部分,即日期后面的月份

  

(\ w + \ s?)(\ d {1,2} \ s?)-(\ d {1,2})

此正则表达式返回2个完全匹配项

第1场

  • 完全匹配:9月12日至14日
  • 第1组:9月
  • 第2组:12
  • 第3组:14

比赛2

  • 完全匹配:5月10日至15日
  • 组1 :5月
  • 第2组:10
  • 第3组:15

我要使用正则表达式替换在组3之前插入组1。 尽管我可以想到其他方法,但是我找不到使用正则表达式替换的方法。

我计划在python中使用它。

所需的输出应如下所示。

  

我只在9月12日至9月14日期间在这里工作。我会回来的   在明年5月10日至5月15日之间。

1 个答案:

答案 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))