ここでは、Pythonにおける正規表現について概要を解説しています。
この記事の対象
正規表現とは
正規表現(regular expressions)とは、文字列をパターン表現したものです。
例えば、文字列の中から任意の文字を抽出したい場合などに使用されます。
使用方法としては、メタキャラクタという特殊文字を用いて表現します。
Pythonにおける正規表現のルール
Pythonにおける正規表現には予め、reモジュールを読み込む必要があります。
import re
正規表現は「r”文字列”」のようなraw string記法を用います。
これは正規表現におけるバックラッシュ(\)を用いた表現がPythonの文字列におけるエスケープ文字のバックラッシュと重なるためです。
example = r"hogehoge"
正規表現を用いた使用例
import re
#1---数値検索の指定
tansaku = r"\d+"
word = "5 Centimeters Per Second"
#2---re.matchで探索
print(re.match(tansaku,word))
正規表現を用いた使用例です。このプログラムは文字列中の数値を検索するプログラムになります。
それでは解説していきます。
#1---数値検索の指定
tansaku = r"\d+"
word = "5 Centimeters Per Second"
1の部分では数値検索の指定をしています。「\d+」というのが数値を検索する正規表現になります。次に文字列を記載しています。
#2---re.matchで探索
print(re.match(tansaku,word))
2の部分ではre.match(正規表現,文字列)で、正規表現が文字列の先頭にマッチするか調べてmatchオブジェクトを返し、無かったらNoneを返すようにしています。
結果
<_sre.SRE_Match object; span=(0, 1), match='5'>
ちゃんと、5という数値を探索できています。spanは位置を示しています。ここでは0番目から1番目以内にあることを示しています。
正規表現の命令一覧
reモジュールで使える関数
正規表現に使える関数は以下の通りです。
項目 | 内容 |
re.match(正規表現,文字列) | 正規表現が文字列の先頭にマッチするか調べてmatchオブジェクトを返し、無かったらNoneを返す。 |
re.search(正規表現,文字列) | 文字列のどこかに正規表現にマッチするものがあるか探索してオブジェクトを返し、無かったらNoneを返す。 |
re.split(正規表現,文字列) | 正規表現で文字列を分割してリストで返す。 |
re.findall(正規表現,文字列) | 文字列の中で正規表現にマッチするものを全て操作して、文字列のリストとして返す。 |
re.finditer(正規表現,文字列) | 文字列の中で正規表現にマッチするものを全て探すイテレータとして返す。 |
re.sub(正規表現,X,文字列) | 文字列の中で正規表現にマッチするものをXに置換する。 |
re.compile(正規表現) | 正規表現を予めコンパイルする。 |
re.match()とre.search()の違い
re.match()とre.search()は似ていますが、re.match()の方は文字列の先頭からpatternがマッチしている必要があります。マッチした場合はmatchオブジェクトを返す特徴があります。
matchオブジェクト
matchオブジェクトには以下のものがあります。
項目 | 内容 |
match.expand(X) | マッチした文字列でXを置換する。 |
match.group([X]) | マッチしたサブグループXを返す。 |
match.groups() | 正規表現にマッチした全てのサブグループの一覧を返す。 |
match.groupdict() | 名前付きのサブグループを辞書型で返す。 |
match.start([X]) | グループXとマッチした部分文字列の先頭のインデックスを返す。 |
match.end([X]) | グループXとマッチした部分文字列の末尾のインデックスを返す。 |
match.span([X]) | グループXに関して、start、endのタプルを返す。 |
その他、正規表現を用いた使用方法
項目 | 内容 |
正規表現における任意の文字の抽出探索 | ここでは、Pythonにおける正規表現の「^」「$」「.」を用いた任意の文字の指定方法について解説しています。 |
正規表現における繰り返し表記 | ここでは、Pythonにおける正規表現の「*」「+」「?」を用いた繰り返し表記について解説しています。 |
正規表現における文字集合の指定 | ここでは、Pythonにおける正規表現の文字集合「[…]」の使用方法について解説しています。 |
正規表現における単語の選択 | ここでは、Pythonにおける正規表現における単語の選択「|」方法について解説しています。 |
正規表現におけるグループ機能 | ここでは、Pythonにおける正規表現のグループ機能を用いた分割、抽出する方法について解説しています。 |