pythonで正規表現キャプチャする
matchオブジェクトを使う。
今回の例では、input00_0.txt ~ input09_1.txtのようなファイルの00_0, 00_1 のような部分をキャプチャしてみる。
はじめに、パターンをコンパイルする。
import re pattern = re.compile(r'input(?P<num>0[0-9](_[01])?)\.txt')
次にマッチさせる。
import os for f in os.listdir(): m = pattern.match(f) # マッチしなかったらNoneを返す
マッチしなかったら、Noneを返すので、マッチオブジェクト内のプロパティを参照するときは、m で None かそうじゃないかを判定する必要がある。
if m is not None: print(m.group('num'))
groupに文字列 num を渡すと、マッチした部分の文字列を取得することができる。
以上、自分の備忘録。
何回もやってるはずなんだけど忘れちゃうんですよね。