Python正規表現
RegEx(正規表現)は、検索パターンを形成する一連の文字です。
RegExを使用すると、文字列に指定した検索パターンが含まれているかどうかを確認できます。
正規表現モジュール
Pythonにはre
という組み込みパッケージがあり、正規表現を操作するために使用できます。
re
モジュールをインポートします。
Pythonでの正規表現
re
モジュールをインポートしたら、正規表現の使用を開始できます。
例
文字列を検索して、"The"で始まり"Spain"で終わるかどうかを確認します。
正規表現関数
re
モジュールは、一致する文字列を検索できる一連の関数を提供します。関数 | 説明 |
---|---|
findall | すべての一致を含むリストを返します |
search | 文字列内のどこかに一致がある場合はMatchオブジェクトを返します。 |
split | 文字列が一致するたびに分割されたリストを返します。 |
sub | 1つまたは複数の一致を文字列に置き換えます |
メタ文字
メタ文字は、特別な意味を持つ文字です。
文字 | 説明 | 例 | 試してみましょう |
---|---|---|---|
[ ] | 集合 | "[a-m]" | それを試してみてください » |
\ | 特殊なシーケンスを通知します(特殊文字のエスケープにも使用できます) | "\d" | それを試してみてください » |
. | 任意の文字(改行文字を除く) | "he..o" | それを試してみてください » |
^ | で始まる | "^hello" | それを試してみてください » |
$ | で終わる | "planet$" | それを試してみてください » |
* | ゼロ回以上の出現 | "he.*o" | それを試してみてください » |
+ | 1つ以上の出現 | "he.+o" | それを試してみてください » |
? | 0回または1回の出現 | "he.?o" | それを試してみてください » |
{} | 指定された回数だけ出現 | "he.{2}o" | それを試してみてください » |
| | または | "falls|stays" | それを試してみてください » |
() | キャプチャとグループ化 |
特別なシーケンス
特別なシーケンスは、\
の後に以下のリストの文字のいずれかが続くもので、特別な意味を持ちます。
文字 | 説明 | 例 | 試してみましょう |
---|---|---|---|
\A | 指定された文字が文字列の先頭にある場合に一致を返します。 | "\AThe" | それを試してみてください » |
\b | 指定された文字が単語の先頭または末尾にある一致を返します。 (先頭の"r"は、文字列が"生の文字列"として扱われることを確認します) |
r"\bain" r"ain\b" |
それを試してみてください » それを試してみてください » |
\B | 指定された文字が存在するが、単語の先頭(または末尾)には存在しない一致を返します。 (先頭の"r"は、文字列が"生の文字列"として扱われることを確認します) |
r"\Bain" r"ain\B" |
それを試してみてください » それを試してみてください » |
\d | 文字列に数字(0~9の数字)が含まれる一致を返します | "\d" | それを試してみてください » |
\D | 文字列に数字が含まれていない一致を返します | "\D" | それを試してみてください » |
\s | 文字列に空白文字が含まれる一致を返します | "\s" | それを試してみてください » |
\S | 文字列に空白文字が含まれていない一致を返します | "\S" | それを試してみてください » |
\w | 文字列に任意の単語文字(a~Zの文字、0~9の数字、およびアンダースコア _文字)が含まれる一致を返します。 | "\w" | それを試してみてください » |
\W | 文字列に単語文字が含まれない一致を返します。 | "\W" | それを試してみてください » |
\Z | 指定された文字が文字列の末尾にある場合に一致を返します | "Spain\Z" | それを試してみてください » |
セット
セットとは、特別な意味を持つ角括弧[]
で囲まれた文字のセットです。
セット | 説明 | 試してみましょう |
---|---|---|
[arn] | 指定された文字(a、r、またはn)のいずれかが存在する一致を返します。 | それを試してみてください » |
[a-n] | アルファベット順にaからnまでの小文字の一致を返します。 | それを試してみてください » |
[^arn] | a、r、nを除く任意の文字の一致を返します。 | それを試してみてください » |
[0123] | 指定された数字(0、1、2、または 3)のいずれかが存在する一致を返します。 | それを試してみてください » |
[0-9] | 0から9までの任意の数字の一致を返します | それを試してみてください » |
[0-5][0-9] | 00と59の任意の2桁の数字の一致を返します。 | それを試してみてください » |
[a-zA-Z] | aからzまでのアルファベット順の任意の文字(小文字または大文字)の一致を返します。 | それを試してみてください » |
[+] | セットでは、+、*、.、|、()、$、{}には特別な意味がないため、[+] は次のことを意味します: 文字列内の任意の+文字との一致を返す | それを試してみてください » |
findall()関数
findall()
関数は、すべての一致を含むリストを返します。
リストには、見つかった順に一致が含まれます。
一致するものが見つからない場合は、空のリストが返されます。
例
一致するものが見つからない場合は、空のリストを返します。
search()関数
search()
関数は、一致する文字列を検索し、一致するものがあればMatchオブジェクトを返します。
複数の一致がある場合は、最初に一致したもののみが返されます。
例
文字列内の最初の空白文字を検索します。
一致するものが見つからない場合は、値None
が返されます。
split()関数
Split()
関数は、一致するたびに文字列が分割されたリストを返します。
maxsplit
パラメータを指定することで、出現回数を制御できます。
sub()関数
sub()
関数は、一致した文字列を選択したテキストに置き換えます。
count
パラメーターを指定することで、置換の数を制御できます。
一致オブジェクト
一致オブジェクトは、検索と結果に関する情報を含むオブジェクトです。
注意:一致するものがない場合は、Matchオブジェクトの代わりに値None
が返されます。
例
Matchオブジェクトを返す検索を実行します。
Matchオブジェクトには、検索と結果に関する情報を取得するために使用されるプロパティとメソッドがあります。
.span()
は、一致の開始位置と終了位置を含むタプルを返します。
.string
は、関数に渡された文字列を返します。
.group()
は、一致した文字列の部分を返します。
例
最初に一致した位置(開始位置と終了位置)を出力します。
正規表現は、大文字の「S」で始まる単語を探します。
例
関数に渡された文字列を出力します。
例
一致した文字列の部分を出力します。
正規表現は、大文字の「S」で始まる単語を探します。
注意:一致するものがない場合は、Match
オブジェクトの代わりに値None
が返されます。
プログラミング学習を加速させる
プログラミングをプロの講師に教えてもらいませんか。