すぐ使える!正規表現サンプル集
〜 お勉強編 〜
Google
WWW を検索 hodade.com を検索

      このエントリーをはてなブックマークに追加

正規表現とは

正規表現とは、文字列の特徴(パターン)を記号化して表現するものです。製品番号、日付、プログラム言語などの文字列なら、おおよそ書式が決まっているので、正規表現で表すことが簡単にできます。
たとえば「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?CAと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
  1. 電話番号のみに一致する正規表現を書きなさい。


    こたえ:[ \d+-\d+-\d+ ]

  2. メールアドレスのみに一致する正規表現を書きなさい。


    こたえ:[ [\w.-]+@[\w.-]+ ]

次のステップへ>>




ある文字を[]で囲みたい正規表現もあります。

1.正規表現とはなにか?
正規表現を簡単に説明すると?

2.正規表現を使う準備
まずはエディタの設定

3.正規表現サンプル集
【検索編】

検索で使える正規表現

4.正規表現サンプル集
【置換編】

置換で使える正規表現

5.正規表現のお勉強
正規表現で検索
少し高度な検索
文字列置換
最短一致について
エスケープ文字のこと
上から順番にだんだん難しくなります

6.エディタの強調表示でテキストに色づけ
色つきで見やすくできます

7.プログラムで正規表現を使う
各種プログラム言語でも使えます

8.ナイスな記事集
ここよりスゴイ正規表現がある


Since 2005.09.30 / HODADE SYSTEMS / Update 2010.03.30