はじめに
この記事は、
「はじめての正規表現。どんなものかだけ知りたい!」
という人向けです。
正規表現は何に使うか
1 文字列が指定のパターンに一致するか判定
入力チェックなんかで使います。
例
文字列がaaaで始まってcccで終わるか判定
正規表現のパターン
aaa.*ccc
判定の例
| 文字列 | 判定結果 |
|---|---|
| aaaccc | OK |
| aaavvccc | OK |
| aaa??ccc | OK |
| aaccc | NG |
| ccc | NG |
2 文字列のうち、パターンに一致する場所を探す
基本的には一番長く一致する場所になります。
文字列のうち、パターンに一致する場所をほかの文字列に置き換える時にも使います。
例
文字列がaaaで始まってcccで終わる場所
正規表現のパターン
aaa.*ccc
判定の例
| 文字列 | 見つかった文字列 |
|---|---|
| abcaaacbcccacccb | aaacbcccaccc |
簡単な正規表現
ドット
上の例でも使った.は、任意の1文字を表します。
正規表現のパターンa.cとすると、a[任意の1文字]cとなります。
| 文字列 | 判定結果 |
|---|---|
| abc | OK |
| abbc | NG |
アスタリスク
*は、直前の表現が0回以上繰り返す。です。
正規表現のパターンa*cとすると、[aが0回以上]cとなります。
| 文字列 | 判定結果 |
|---|---|
| ac | OK |
| aaac | OK |
| c | OK |
| abc | NG |
グルーピング
()で文字をまとめることができます。
正規表現のパターン(aa)*cとすると、[aaが0回以上]cとなります。
| 文字列 | 判定結果 |
|---|---|
| aac | OK |
| aaaac | OK |
| c | OK |
| ac | NG |
あれかこれにヒット
|をつかってorを表現できます。
正規表現のパターン(aa|cc)とすると、aa or ccとなります。
| 文字列 | 判定結果 |
|---|---|
| aa | OK |
| cc | OK |
| aacc | NG |
範囲指定
[A-Z]でアルファベット大文字を表現できます。
※全角の扱いは注意。
正規表現のパターン[A-Z]*とすると、大文字だけで構成された文字列となります。
| 文字列 | 判定結果 |
|---|---|
| QIITA | OK |
| Qiita | NG |
パターンの作るとき
実際に欲しいパターンを作るときはテストできるサイトで試しながら作ります。
正規表現には方言のようなものがあったりするので、ちゃんと調べて、実装後のテストは入念にしましょう。
あとがき
正規表現で検索するととっつきにくい記事ばかり出てくるので、
この記事はアップデートしてとっつきやすくしたい。