正規表現を使用して文字列のリストに一致させたい: 1a
, 2aa
, 3aaa
... 文字列の最初の数字は、その数字に続く a の数を示します。
本能的に、後方参照が役立つかもしれないと思いますが、それは真実ではありません。
正規表現では、後方参照を使用して、以前にキャプチャしたサブパターンと一致させることができます。たとえば、(.+) \1
に一致しaaa aaa
ます。
パターンが一致した回数{n}
、{n,m}
またはで後方参照を使用できますか{n,}
?
たとえば、\da{\1}
理想的には に一致3aaa
しますが、これを python building modulere
でテストしましたが、機能しません。\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>
この機能はモジュールによって実装されていませんか、それとも単にこの機能が基本的な正規表現アルゴリズムでサポートされていないためですか?