4.2.3 モジュール コンテンツ

このモジュールは幾つかの関数、定数、例外を定義します。この関数のいくつかは コンパイル済み正規表現向けの完全版のメソッドを簡略化したバージョンです。 それなりのアプリケーションのほとんどで、コンパイルされた形式が用いられる のが普通です。

compile( pattern[, flags])
正規表現パターンを正規表現オブジェクトにコンパイルします。 このオブジェクトは、以下で述べる match()search() メソッドを使って、マッチングに使うことが できます。

式の動作は、flagsの値を指定することで加減することが できます。値は以下の変数を、ビットごとの OR ( | 演算子)を 使って組み合わせることができます。

シーケンス

prog = re.compile(pat)
result = prog.match(str)

は、

result = re.match(pat, str)

と同じ意味ですが、compile() を使うバージョンの方が、 その式を一つのプログラムで何回も使う時にはより効率的です。

I
IGNORECASE
大文字・小文字を区別しないマッチングを実行します; [A-Z]のような式は、 小文字にもマッチします。これは現在のロケールには 影響されません。

L
LOCALE
\w\W\bおよび \B を、現在のロケールに従わさせます。

M
MULTILINE
指定されると、パターン文字 "^" は、 文字列の先頭および各行の先頭(各改行の直後)とマッチします;そして パターン文字 "$" は文字列の末尾および各行の末尾 (改行の直前)とマッチします。デフォールトでは、 "^" は、 文字列の先頭とだけマッチし、 "$"は、文字列の末尾および文字列の末尾の 改行の直前(がもしあれば)とマッチします。

S
DOTALL
特殊文字 "." を、改行をを含む任意の文字と、とにかくマッチ させます;このフラグがなければ、"." は、改行 以外の 任意の文字とマッチします。

U
UNICODE
\w\W\b および \B を、Unicode 文字特性データベースに従わさせます。 バージョン 2.0 で 新たに追加 された仕様です。

X
VERBOSE
このフラグによって、より見やすく正規表現を書くことができます。 パターン内の空白は、文字クラス内にあるか、エスケープされていない バックスラッシュが前にある時以外は無視されます。 また、行に、文字クラス内にもなく、エスケープされていない バックスラッシュが前にもない "#" がある時は、 そのような "#"の左端から その行の末尾までが無視されます。

search( pattern, string[, flags])
string全体を走査して、正規表現 pattern がマッチを発生する 位置を探して、対応する MatchObject インスタンスを返します。 もし文字列内に、そのパターンとマッチする位置がないならば、 None を返します; これは、文字列内のある点で長さゼロのマッチ を探すこととは異なることに注意して下さい。

match( pattern, string[, flags])
もし string の先頭で0 個以上の文字が正規表現 pattern と マッチすれば、対応する MatchObject インスタンスを返します。 もし文字列がパターンとマッチしなければ、 None を返します; これは長さゼロのマッチとは異なることに 注意して下さい。

注意: もし string のどこかにマッチを位置付けたいのであれば、 代わりに search() を使って下さい。

split( pattern, string[, maxsplit = 0])
stringを、 patternがあるたびに分割します。もし 括弧のキャプチャが patternで使われていれば、パターン内の すべてのグループのテキストも結果のリストの一部として返されます。 maxsplit がゼロでなければ、高々 maxsplit個の分割が 発生し、文字列の残りは、リストの最終要素として返されます。 (非互換性ノート:オリジナルの Python 1.5 リリースでは、 maxsplitは無視されていました。これはその後のリリースでは 修正されました。)

>>> re.split('\W+', 'Words, words, words.')
['Words', 'words', 'words', '']
>>> re.split('(\W+)', 'Words, words, words.')
['Words', ', ', 'words', ', ', 'words', '.', '']
>>> re.split('\W+', 'Words, words, words.', 1)
['Words', 'words, words.']

この関数は、古い regsub.split()regsub.splitx()の 機能を結合して拡張したものです。

findall( pattern, string[, flags])
patternstring へのマッチのうち、重複しない全てのマッチ からなるリストを返します。パターン中に何らかのグループがある場合、グルー プのリストを返します。グループが複数定義されていた場合、タプルのリスト になります。他のマッチの開始部分に接触しないかぎり、空のマッチも結果に 含められます。 バージョン 1.5.2 で 新たに追加 された仕様です。 バージョン 2.4 で 変更 された仕様: オプションの flags 引数を追加しました

finditer( pattern, string[, flags])
string 内の RE patternの重複しないマッチのすべての イテレータを返します。各マッチごとに、イテレータはマッチ オブジェクトを返します。他にマッチがなければ、 空のマッチも結果に入ります。 バージョン 2.2 で 新たに追加 された仕様です。 バージョン 2.4 で 変更 された仕様: Added the optional flags argument

sub( pattern, repl, string[, count])
string 内で、 patternと重複しないマッチの内、一番左にあるものを 置換 repl で置換して得られた文字列を返します。もしパターンが 見つからなければ、string を変更せずに返します。 repl は文字列でも関数でも構いません;もしそれが文字列であれば、 それにある任意のバックスラッシュエスケープは処理されます。すなわち、 "\n" は単一の改行文字に変換され、"\r"は、 行送りコードに変換されます、等々。 "\j" のような未知のエスケープはそのままにされます。 "\6"のような後方参照(backreference)は、パターンのグループ 6 とマッチ したサブ文字列で置換されます。 例えば:

>>> re.sub(r'def\s+([a-zA-Z_][a-zA-Z_0-9]*)\s*\(\s*\):',
...        r'static PyObject*\npy_\1(void)\n{',
...        'def myfunc():')
'static PyObject*\npy_myfunc(void)\n{'

もし repl が関数であれば、重複しない patternが発生する たびにその関数が呼ばれます。この関数は一つのマッチオブジェクト 引数を取り、置換文字列を返します。例えば:

>>> def dashrepl(matchobj):
...     if matchobj.group(0) == '-': return ' '
...     else: return '-'
>>> re.sub('-{1,2}', dashrepl, 'pro----gram-files')
'pro--gram files'

パターンは、文字列でも RE でも構いません;もし正規表現フラグを指定する 必要があれば、RE オブジェクトを使うか、パターンに埋込み修飾子を使わ なければなりません;たとえば、"sub("(?i)b+", "x", "bbbb BBBB")" は 'x x' を返します。

省略可能な引数 count は、置換されるパターンの出現回数の 最大値です;count は非負の整数でなければなりません。 もし省略されるかゼロであれば、出現したものがすべて置換されます。 パターンのマッチが空であれば、以前のマッチと隣合わせでない時だけ 置換されますので、"sub('x*', '-', 'abc')" は '-a-b-c-' を 返します。

上で述べた文字エスケープや後方参照の他に、 "\g<name>" は、 (?P<name>...) のシンタクスで定義されているように、 "name" という名前のグループとマッチしたサブ文字列を 使います。"\g<number>" は対応するグループ番号を使います; それゆえ "\g<2>" は "\2"と同じ意味ですが、 "\g<2>0" のような置換でもあいまいではありません。 "\20" は、 グループ 20 への参照として解釈されますが、グループ 2 にリテラル文字 "0" が続いたものへの参照としては解釈されません。 後方参照 "\g<0>" は、 RE とマッチするサブ文字列全体を置き換えます。

subn( pattern, repl, string[, count])
sub() と同じ操作を行いますが、タプル (new_stringnumber_of_subs_made)を返します。

escape( string)
バックスラッシュにすべての非英数字をつけたstringを返します;これは もし、その中に正規表現のメタ文字を持つかもしれない任意のリテラル文字列と マッチしたいとき、役に立ちます。

exception error
ここでの関数の一つに渡された文字列が、正しい正規表現ではない時 (例えば、その括弧が対になっていなかった)、あるいはコンパイルや マッチングの間になんらかのエラーが発生したとき、発生する例外です。 たとえ文字列がパターンとマッチしなくても、 決してエラーではありません。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。