これはおそらくかなり基本的なことですが、文字グループの特定の倍数にのみ一致する正規表現を作成しようとしています。たとえば、re.findall(expression, 'aaaa') は 'aaaa' を返しますが、re.findall(expression, 'aaa') は 'aa' を返します。ここで、expression はペア aa を含む正規表現です。文字列全体が「aa」の整数倍である場合にのみ、文字列全体を返します。何か案は?
質問する
165 次
2 に答える
1
を使用するだけ(aa)+
です。(findall の場合は、非キャプチャ グループを使用する必要があるため、(?:aa)+
.)
>>> re.findall('(?:aa)+', 'aa')
['aa']
>>> re.findall('(?:aa)+', 'aaaa')
['aaaa']
>>> re.findall('(?:aa)+', 'aaaaa')
['aaaa']
于 2012-08-04T07:56:13.727 に答える
0
(?:(?:expression){3})+
たとえば、式の 3 の倍数をすべて見つけるなどの方法を試してください。式が短い場合は、必要に応じて何度でも記述できます。
正確な重複を一致させたい場合は、たとえば(?:(expression)\1{2})+
3 の倍数などを試してください。式が自明ではない場合、これにはバックトラックが必要になる場合があり、したがって遅くなる可能性があることに注意してください。
于 2012-08-04T08:03:55.200 に答える