トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

正規表現メモ.py

[Python]

matchとsearch

searchはPerlと同じ。部分マッチ。グローバルオプションが意味を持つ。
matchは常に対象文字列の先頭からのマッチを行う。

後方参照

インデックスの数え方

m = re.match(r'((a|b|c)ddd)(.*)', s)

最初のカッコが1個目。
最初のカッコの中に含まれるサブカッコが2個目。
それから最初のカッコの後ろにあるカッコが3個目。
という風に数える。

後方参照の利用方法

正規表現内では、\number が利用できる。正規表現内なので、\ はエスケープする必要がある。

m = re.match(r'(\d)\.\\1', s)

re.sub()に渡す置き換え文字列の中では、同じく \number と、\g<number> の2種類の後方参照表記が使える。\g<number>は単に、リテラルの数字文字列と紛れないようにするための記法。

グループ

m.group(0)
正規表現にマッチした文字列全体。
m.group(1)
1個目のマッチグループ文字列。
m.group(1, 3)
1個目のマッチグループ文字列と3個目のマッチグループ文字列のタプル。
m.group('name')
名前付きグループ(?P<name>...)にマッチした文字列。
m.groups()
すべてのマッチグループ文字列のタプル。マッチしなかったグループに対してはNoneが返される。
m.groups('N')
すべてのマッチグループ文字列のタプル。マッチしなかったグループに対しては引数文字列が返される。

グローバルマッチ

re.findall、re.finditer を使う。