正規表現(Regular Expression)とは
正規表現(Regular Expression、regex)は、文字列のパターンマッチングや検索・置換などを行うための強力なツールです。プログラム内で複雑な文字列操作を簡潔に行うために使用されます。
正規表現の構文
正規表現は、特定の文字列パターンを記述するためのシンタックス(構文)を持っています。以下に、基本的な正規表現の構成要素を紹介します。
文字クラス:
[abc]
:a、b、またはcのいずれか1文字[0-9]
:0から9までのいずれか1文字[^abc]
:a、b、またはc以外のいずれか1文字
パターン | 意味 | 比較する文字列 | 結果 |
[a-z] | アルファベット小文字を探す | abcd | ○ |
[a-z0-9] | アルファベットと数字を探す | ABC | × |
量指定子:
*
:0回以上の繰り返し+
:1回以上の繰り返し?
:0回または1回の繰り返し{n}
:ちょうどn回の繰り返し{n,m}
:n回からm回の繰り返し
アンカー:
^
:文字列の先頭$
:文字列の末尾
パターン | 意味 | 検索する文字列 | 結果 |
^ab | abで始まっている文字列を検索する | abc | ○ |
^ab | 上記と同じ | xab | × |
ab$ | abで終了している文字列を検索する | cab | ○ |
特殊文字:
.
:任意の1文字\d
:任意の数字(0-9)\w
:任意の単語構成文字(アルファベット、数字、アンダースコア)\s
:任意の空白文字(スペース、タブなど)
パターン | 意味 | 検索する文字列 | 結果 |
a.b | aとbの間に一文字入っている文字列を検索する | acb | ○ |
a.b | 上と同じ | acdb | × |
a..c | aとcの間に2文字入っている文字列を検索する | abdc | ○ |
正規表現の例
パターンは複数組み合わせることが出来ます。
パターン | 意味 | 検索する文字列 | 結果 |
\d{3}-\d{4} |
数値が3文字続いた後ハイフンを一文字挟んで数値が4文字続く(郵便番号) |
123-4567 | ○ |
[\w\-._]+@[\w\-._]+\.[A-Za-z]+ |
@の前は「英数字と-と.と_」で構成されていて@の後に「英数字と-と.と_」が一文字以上と.を挟んで「英数文字」1文字以上で終わる(メールアドレス) |
hoge_hoge@sample.com | ○ |
まとめ
ここでは正規表現について学びました。
強力な文字列検索に使用できることが理解できたかと思います。
他にも基本構文を組み合わせる事で複雑な検索をすることが出来ます。
複雑なものはネットでゴロゴロ転がっていますのでそちらを参照してください。
尚、ここであげた正規表現は標準ライブラリである正規表現を扱う前提知識です。
コメント