おおざっぱに言えば,正規表現 regular expression とは,ある規則に従う文字列を指定(識別)するための規則である。
例えば,「A で始まって 9 で終わるような文字列」とか,「文字列の先頭にアルファベットがある行」というような指定をしたいことがある。このようなときには,可能な全ての場合を列挙するわけにはいかないので,特定の文字で一般的な文字列を指定する方法をとることになる。
正規表現が使われるのは文字列を処理する関数やパターンの指定のときである。例えば, $0 ~ /this is reg\. exp\./ というパターンは,入力した行の中に,this is reg. exp. という文字列が含まれているとき「真値」を返す。
正規表現に使われる文字(例えば,上の例の \ など)とその意味は以下のようになる。
^ | 文字列の先頭を表す。 例:^abc というのは,先頭の 3 文字が abc である文字列にマッチする。 |
---|---|
$ | 文字列の末尾を表す。 例:987$ というのは,最後の 3 文字が 987 である文字列にマッチする。 |
. | 改行文字を除く任意の 1 文字に一致する。 例:a.x は a と x の間に任意の 1 文字がある 3 文字(たとえば ayx,a9x など)にマッチする。 |
[ ] | [ ]に含まれる 1 文字にマッチする。連続する文字は-でつないで指定する。 例:[abC] は,a, b, C のいずれかを表す。[0-9] は,数字 1 文字を表す。 |
[^ ] | [ ] に含まれない 1 文字にマッチする。 例:[^0-9A-Za-z] は,英数字以外の 1 文字にマッチする。 |
| | 「または」を意味する。 例:^A|[0-9] 行頭の A か 数字にマッチする。 |
* | この記号の前にある文字の0 回以上の繰り返しを意味する。 例:ab*x は ax,abx,abbx,abbbx などにマッチする。 |
+ | この記号の前にある文字の1 回以上の繰り返しを意味する。 例:ab+x は abx,abbx,abbbx などにマッチする。 |
? | この記号の前にある文字の 1 回もしくは 0 回の繰り返しを意味する。 例:ab?x は ax,abx のいずれかにマッチする。 |
\ | この文字の後に続く文字をそのままの意味で使用する。 例:\. はピリオドを表す。\* はアスタリスクを表す。 |