1

Pythonで Look-and-Sayシーケンスの正規表現を作成しようとしています。アイデアは、特定の文字列を同じ数字の部分文字列に分割することです。試行錯誤して、私は持ってい'((\d)\\2*)'ます。

パターンの場合、11244455221116これは[('11', '1'), ('2', '2'), ('444', '4'), ('55', '5'), ('22', '2'), ('111', '1'), ('6', '6')]期待どおりです。これは機能しますが、不器用に見えます。正規表現の有無にかかわらず、これを行うためのよりクリーンな方法はありますか?

4

2 に答える 2

0

文字列を分割する代わりに、ラムダ関数で置換できます。

re.sub(r'(\d)\1*', lambda x: str(len(x.group(0)))+x.group(1), '112224355')

結果:2132141325

于 2013-07-25T22:33:19.670 に答える