Python 入門

ホーム > 正規表現 > Python での正規表現の基本的な書き方

Python での正規表現の基本的な書き方

ここでは Python における正規表現 (regular expression) の基本的な利用方法を説明します。

正規表現のパターンの書き方は、JavaScript、Perl、PHP などとほぼ同様なので Python でも問題なくかける人も多いと思います。 ここでは具体的にコードを示すことによって、使い方になれていきましょう。

では、非常に単純な正規表現の利用コードを示します。

import re

match = re.match(r'Hello (.*)', 'Hello world!')

if match is None:
	print 'Not match'
else:
	print match.group(1)

これをファイルに保存して、実行すれば次のような結果を得るはずです。(動作確認は Python 2.6 で行ってます)

world!

ちなみに、ファイルに保存せず Python で・・・

>>> import re
>>> m = re.match(r'Hello (.*)','Hello world!')
>>> m.group(1)
'world!'
>>> 

と書いてももちろん実行できますが、あとあと実際のコード中で使うことを考えるとファイルに書くような形の方が良いと思ってそうしてます。 (ちょっとしたマッチのテストをするならインタプリタで対話的に試した方がラクですけどね)

さて、話を戻すと、もっとも単純なコードはだいたい上のようになります。

まずやらないといけないのは、re モジュールをインポートすることです。

import re

そして、re.match 関数を呼んでいます。

match = re.match(r'Hello (.*)', 'Hello world!')

ここで、match 関数が受け取る引数の意味は次の通りです。

match = re.match(パターン, 文字列, [フラグ])

三つ目の引数のフラグは任意で、まったく指定しなくても構いません。

パターンについては、バックスラッシュ (\) などの特殊文字をしばしば使うので、文字列の前に r を付けて生文字列 (raw string) にしてます。 常に r 付きとする習慣にすると分かりにくい不具合に悩まされることはなくなるかもです。

match 関数はマッチした場合、マッチオブジェクト (MatchObject) を返し、マッチしないときは None となります。 そのため match 関数を読んだあと、その戻り値を is None としてチェックしています。

このコードの例では、返った結果を match という名前の変数で受けているのでちょっと紛らわしいですね。(ごめんなさい! でも、こういうのも OK ということです。match 関数の方は re に属するので、re. をつけないとダメだ、ということですね。)

上の例では、"Hello " という文字列で始まるものとマッチし、任意の文字(=ドット)が続く場合はそれがグループとして取り込まれます。

今回は文字列が "Hello world!" ですから指定したパターンにマッチして、 "world!" の部分が group(1) に取り込まれたということになります。

ホーム > 正規表現 > Python での正規表現の基本的な書き方