【问题标题】:Regex Substitution from the Selected Regex Group来自选定正则表达式组的正则表达式替换
【发布时间】:2018-10-12 02:34:51
【问题描述】:

我有以下字符串

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

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

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

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

第 1 场比赛

  • 全场比赛:9 月 12 日 -14 日
  • 第一组:九月
  • 第 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 日之间。

【问题讨论】:

    标签: python regex search replace regex-group


    【解决方案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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-24
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 2014-03-29
      • 2015-07-25
      • 2012-08-01
      相关资源
      最近更新 更多