#はじめに
この記事は、
「はじめての正規表現。どんなものかだけ知りたい!」
という人向けです。
#正規表現は何に使うか
###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 |
#パターンの作るとき
実際に欲しいパターンを作るときはテストできるサイトで試しながら作ります。
正規表現には方言のようなものがあったりするので、ちゃんと調べて、実装後のテストは入念にしましょう。
#あとがき
正規表現で検索するととっつきにくい記事ばかり出てくるので、
この記事はアップデートしてとっつきやすくしたい。