トップ 一覧 検索 ヘルプ RSS ログイン

正規表現メモ.pyの変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
{{category 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 を使う。