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 を渡すと、マッチした部分の文字列を取得することができる。

以上、自分の備忘録。

何回もやってるはずなんだけど忘れちゃうんですよね。