正規表現とは
正規表現とは、文字列の特徴(パターン)を記号化して表現するものです。製品番号、日付、プログラム言語などの文字列なら、おおよそ書式が決まっているので、正規表現で表すことが簡単にできます。
たとえば「F900i」,「SH900i」,「SO505i」の規則を日本語で表すと「アルファベットが1文字以上2文字以内で、続いて3桁の数値がきて、続いてiという文字がくる」という規則になりますが、これを正規表現で表すと「[A-Z]{1,2}\d{3}i」となります。
特別な意味を持つ文字がある
正規表現は特別な意味を持つ文字と、通常の文字列を組み合わせて記述します。
以下に特別な意味を持つ文字をいくつか紹介します。
正規表現 | 説明 |
* | 直前の文字の0回以上に一致 |
+ | 直前の文字の1回以上に一致 |
. | 1つの任意文字(A, B, C, ...) (\nを除く) |
? | 直前の文字の0回または1回に一致 |
{n} | 直前の文字がちょうどn回に一致 |
{n,} | 直前の文字がn回以上に一致 |
{n,m} | 直前の文字がn回以上,m回以下に一致 |
[xyz] | xかyかzの何れか1文字に一致 |
\w | 英数文字かアンダーバーを表す(a〜z,A〜Z,0〜9,_) |
\d | 数値文字を表す(0〜9) |
これらを使った例を以下に書きます。
正規表現 | 説明 | 一致する文字列 |
A* | 0個以上連続したAに一致 | , A, AA, AAA, ... |
A+ | 1個以上連続したAに一致 | A, AA, AAA, ... |
A. | Aの次に何れかの1文字がある場合に一致,改行文字は除く | AB, A1, A. |
AB?C | AとCの間にBがないか,Bがある場合に一致 | AC, ABC |
A{3} | 3個のAに一致 | AAA |
A{2,4} | 2個以上,4個以内のAに一致 | AA, AAA, AAAA |
[a-z]+ | a〜zの何れか,つまりアルファベット小文字を表す | value, ascii |
[A-Z]+ | A-Zの何れか,つまりアルファベット大文字を表す | VALUE, ASCII |
\w+ | 1個以上の英数文字に一致 | abc, a001, 001 |
\d+ | 1個以上の数字に一致 | 1, 12, 123, 001 |
問題を解いてみよう
以下の文字列があるとして、設問に答えなさい。
ニンジン, 03-1234-5678, yama@nakasato.pref.jp, F900i
ニンニク, 017-712-1234, abc@nakasato.pref.jp, SH900i
ニラ, 090-9635-2759, x-y-z555@anpan-man.com, SO505i
ニモ, 0172-53-1234, pocket@monsters.com, D505i
- 電話番号のみに一致する正規表現を書きなさい。
こたえ:[ \d+-\d+-\d+ ]
- メールアドレスのみに一致する正規表現を書きなさい。
こたえ:[ [\w.-]+@[\w.-]+ ]
日付を検索する正規表現もあります。
|
|
1.正規表現とはなにか?
正規表現を簡単に説明すると?
2.正規表現を使う準備
まずはエディタの設定
3.正規表現サンプル集 【検索編】
検索で使える正規表現
4.正規表現サンプル集 【置換編】
置換で使える正規表現
5.正規表現のお勉強
├正規表現で検索
├少し高度な検索
├文字列置換
├最短一致について
└エスケープ文字のこと
上から順番にだんだん難しくなります
6.エディタの強調表示でテキストに色づけ
色つきで見やすくできます
7.プログラムで正規表現を使う
各種プログラム言語でも使えます
8.ナイスな記事集
ここよりスゴイ正規表現がある
|