いきなり
## 正規表現
正規表現とは、
と打ったところでピタッと手が止まる。
普段なにげなく使っている正規表現だが、いざ説明しようとするとまったく続きが出てこない。
そもそもツールのマニュアルなのだから、正規表現そのものの説明は他に譲ればいい。ネットにはいくらでも素晴らしい解説がアップされている。
だがしかし、想定した読者層はわざわざググってまで正規表現の何たるかを調べそうにない。
何故なら、わざわざググってまで正規表現の何たるかを調べる人は、たいてい正規表現の何たるかを知っているだろうからだ。
過去のベータテストで「正規表現モードであいまい検索(*や?)が使えません」というバグ(!?)報告が来た実績もある。ここは何かしらひねり出さないと...
ということで
正規表現を勉強したことがない読者を想定したページを書いてみたところ、むしろ自分の理解が深まった気がする。
とはいえ、Qiitaは読者層が違うので、そのまま置いても仕方ない。
そこで、例示などをそぎ落として、骨子をできるだけ短くまとめて置いておく。
正規表現とは
通常の文字と特殊文字1を使って、パターンを書き表す方法。
正規表現の要素
通常の文字
特殊文字以外の文字。その文字そのものを表す。
a
→ a に一致する
エスケープ
特殊文字そのものを表したいときには、直前に \ をつけてエスケープする。
\.
→ . に一致する
文字クラス
どんな文字かを表す。
[abc]
→ abc のいずれか1文字に一致する
量指定子
直前のパターンが何個あるかを表す。
a+
→ 1個以上の a に一致する
位置指定
どこにあるかを表す。
^a
→ 先頭が a で始まるものに一致する
グループ
パターンの一部を () で囲んでグループ化する。
(abc)+
→ 1個以上の abc の繰り返しに一致する
OR
| で OR(または)を表す。
(abc|def)
→ abc か def に一致する
参照
\ や $ に続けて数字でグループの番号(1起算)を書くことで、グループ(が一致した文字列)を参照する。
(焼き|蒸し)(りんご|バナナ)
→ \2 (または $2 )は果物の名前を参照する
さいごに
この記事が、正規表現を構成する部品の理解の助けになれば幸いです。
-
特殊文字 : パターンを表現するために使われる文字、メタキャラクタ ↩