我想使用正则表达式来匹配字符串列表:1a
, 2aa
, 3aaa
... 其中字符串中的第一个数字表示该数字后面有多少个 a。
我本能地认为反向引用可能会有所帮助,但事实并非如此。
在 Regex 中,我们可以使用反向引用来匹配先前捕获的子模式。例如,(.+) \1
将匹配aaa aaa
.
我可以在模式匹配时间使用反向引用{n}
,{n,m}
还是{n,}
?
例如,\da{\1}
理想情况下会匹配3aaa
,但是,我用 python 构建模块测试了re
它,它不起作用。编译器似乎将其理解\da{\1}
为不同的文字:
>>> re.compile('\da{\1}', re.DEBUG)
in
category category_digit`
literal 97
literal 123
literal 1
literal 125
<_sre.SRE_Pattern object at 0xb7726790>
>>> re.compile('\da{1}', re.DEBUG)`
in
category category_digit
max_repeat 1 1
literal 97
<_sre.SRE_Pattern object at 0xb7707820>
这个功能是模块没有实现还是仅仅因为基本的正则表达式算法不能支持这个功能?