考虑这个(非常简化的)示例字符串:
1aw2,5cx7
如您所见,它是digit/letter/letter/digit
用逗号分隔的两个值。
现在,我可以将其与以下内容相匹配:
>>> from re import match
>>> match("\d\w\w\d,\d\w\w\d", "1aw2,5cx7")
<_sre.SRE_Match object at 0x01749D40>
>>>
问题是,我必须写\d\w\w\d
两次。对于小模式,这还不错,但是对于更复杂的正则表达式,两次编写完全相同的东西会使最终模式变得庞大且难以处理。它也似乎是多余的。
我尝试使用命名捕获组:
>>> from re import match
>>> match("(?P<id>\d\w\w\d),(?P=id)", "1aw2,5cx7")
>>>
但它不起作用,因为它正在寻找两次出现的1aw2
, not digit/letter/letter/digit
。
有什么方法可以保存模式的一部分,例如\d\w\w\d
, 以便以后可以在相同的模式中使用它?换句话说,我可以在模式中重用子模式吗?