我需要替换正则表达式中捕获组内的值为任意值;我已经查看了
我有一个像这样的字符串:
re.sub
,但它似乎工作方式不同。我有一个像这样的字符串:
s = 'monthday=1, month=5, year=2018'
我有一个正则表达式,可以通过捕获组来匹配它,如下所示:
regex = re.compile('monthday=(?P<d>\d{1,2}), month=(?P<m>\d{1,2}), year=(?P<Y>20\d{2})')
现在我想要将名为d的组替换为aaa
,将名为m的组替换为bbb
,将名为Y的组替换为ccc
,就像下面的例子一样:
'monthday=aaa, month=bbb, year=ccc'
基本上我想保留所有不匹配的字符串,并用一些任意值替换匹配组。
有没有办法实现所需的结果?
注意
这只是一个例子,我可能有其他具有不同结构但具有相同名称捕获组的输入正则表达式...
更新
由于似乎大多数人都关注示例数据,我添加了另一个示例,假设我有这个其他输入数据和正则表达式:
input = '2018-12-12'
regex = '((?P<Y>20\d{2})-(?P<m>[0-1]?\d)-(?P<d>\d{2}))'
正如您所看到的,我仍然有相同数量(3)和相同命名方式的捕获组,但结构完全不同... 然而,我需要的是像以前一样用一些任意文本替换捕获组:
'ccc-bbb-aaa'
将名为Y
的捕获组替换为ccc
,名为m
的捕获组替换为bbb
,名为d
的捕获组替换为aaa
。
在这种情况下,正则表达式不是完成任务最好的工具,我愿意接受其他可以实现我的目标的建议。
regex.sub('monthday=aaa, month=bbb, year=ccc', s)
- Aran-Fey