2017-09-03 16 views

答えて

2

あなたは、置換パターンの正規表現パターンを使用することはできません。 {...}は、グループ1でキャプチャしたテキストをコピーしません。n回。あなたが望むものを達成するためにre.subにラムダ式やコールバックメソッドを使用する必要があります。

import re 
s = 'gh3wef2geh4ht' 
s=re.sub(r"\d", lambda m: m.group() * int(m.group()), s) 
print(s) 

マッチ全体がすでにあるとして、あなたは、ここで任意のキャプチャグループを必要としないPython demo

ノートを参照してください。グループ0ここ

で利用可能な、mm.group()が試合のテキスト値であるとint(m.group())intへ桁のキャストである、カレンマッチオブジェクトが割り当てられています。したがって、3が一致すると、ラムダ式はちょうど"3" * 3となり、置換えとして返されます。

4

あなたはマッチした数字をキャプチャし、それを繰り返すためにlambda機能を使用することができます。

s="gh3wef2geh4ht" 
​ 
re.sub(r'(\d)', lambda m: m.group(1) * int(m.group(1)), s) 
# 'gh333wef22geh4444ht' 
関連する問題