2017-08-05 23 views
0

私はそのようなデータセット(それはファイルからSTRとしてオープンです)得た:正規表現は、1桁以上の数字に一致するように

outmfPattern = 'out\dmf\d' 

MF8='out1mf8':'constant',[1944.37578865883] 
MF9='out1mf9':'constant',[2147.79853787502] 
MF10='out1mf10':'constant',[565.635908155949] 
MF11='out1mf11':'constant',[0] 
MF12='out1mf12':'constant',[0] 

私は、そう作成した正規表現を括弧で、この値が必要に使用:

re.findall(outmfPattern, f) 

mf = 9まではうまく動作しています。誰もがこれをどう扱うか考えていますか?

+0

'out \ dmf \ d + '' '+'は1つ以上のマッチを指定します。 –

答えて

5

はあなたの正規表現out\dmf\dを打破するのをしてみましょう:

  • outはシーケンス'out'
  • \dが数字
  • mf一致シーケンス'mf'
  • \d試合桁
と一致して一致しました

out1mf11のようなものに一致させる場合は、最後にの数字を探す必要があります。

あなたは、最後にout\dmf\d{1,2}のみ1または2桁と一致する場合は、out\dmf\d+、またはを使用することができます。あなたはそれらの検索項目にブラケットを追加したい場合は


In [373]: re.findall('out\dmf\d+', text) 
Out[373]: ['out1mf8', 'out1mf9', 'out1mf10', 'out1mf11', 'out1mf12'] 
さらに

、おそらく代わりにre.subをご覧ください:

In [377]: re.sub('(out\dmf\d+)', r'(\1)', text) 
Out[377]: "MF8='(out1mf8)':'constant',[1944.37578865883] MF9='(out1mf9)':'constant',[2147.79853787502] MF10='(out1mf10)':'constant',[565.635908155949] MF11='(out1mf11)':'constant',[0] MF12='(out1mf12)':'constant',[0]" 

re.subは同封同じで撮影したグループを置き換えますparensで。

関連する問題