メタ文字

メタ文字とは、本来の文字意味とは異なり、特別な意味を持たせた文字のこと。

例をあげると、"?"ははてなマークが文字本来の意味ですが、正規表現では"直前の文字の一回以上の繰り返し"という意味で使われます。

さらに全角文字にも対応し、挙句の果てには[A-z0-9]のような書き方もできます。これはAからzまでの文字か数字の場合に合致します。

文字

内容

文字

¥

内容

次に続く文字がメタ文字であることを示します。たとえば'¥d' は数字と一致します。なお、¥を文字として認識させたい場合は"¥¥"というように続けて記載します。

文字

^

内容

入力文字列の先頭または改行("¥n" or "¥r")の直後と一致します。

文字

$

内容

入力文字列の末尾または改行("¥n" or "¥r")の直前と一致します。

文字

*

内容

直前の文字またはパターンと0回以上一致します。例えば"b*"は"a","ab","abbbbb"と一致します。

文字

+

内容

直前の文字またはパターンと1回以上一致します。"*"との違いは*はなくてもよいが"+"は一つは必要ということです。例えば"b*"は"a"は一致しません。"ab","abbbbb"と一致します。

文字

?

内容

直前の文字またはパターンと0または1回一致します。"*"との違いは*はなくてもよいが"+"は一つは必要ということです。例えば"b*"は"a","ab"は一致します。しかし"abbbbb"とは一致しません。


いずれかの文字

①:[0123456789][0123456789][0123456789][0123456789][0123456789][0123456789][0123456789]
②:[0-9][0-9][0-9][0-9][0-9][0-9][0-9]
③:[0-9]{7}
  • ①[ ] で括る事でグループ化します。

  • ②"-" で範囲を指定することができます。

  • ③"{n}" で繰返しを指定できます。

この三つはすべて同じ意味となります。

グループ化は数字だけだなくアルファベットやひらがなも使うことができます。また[2-7]のように中途半端にすることもできます。

さらに全角文字にも対応し、挙句の果てには[A-z0-9]のような書き方もできます。これはAからzまでの文字か数字の場合に合致します。


いずれかの文字列

飛行機|船|電車

この場合 "飛行機" "船" "電車" のいずれかの文字列ならば合致します。ポイントは文字列です。


同じ文字の繰り返し

①:[0-9]{3}-?[0-9]{4}
②:[0-9]{3}-*[0-9]{4}
③:[0-9]{3}-+[0-9]{4}
  • ①:"?"は、直前の文字が"0 or 1"個だけあるという意味です。"1234567"または"123-4567"に合致します。

  • ②:"*"は、直前の文字が"0個以上"あるという意味です。"1234567","123-4567","123--4567"‥‥に合致します。

  • ③:"+"は、直前の文字が"1個以上"あるという意味です。基本的に②と同じですが、"1234567"には合致しません。


最初と最後

^[0-9]{3}-*[0-9]{4}$

最初を指定するには "^" 最期を指定するには "$" を指定してあげます。


なんでもいい1文字

^[0-9]{3}.[0-9]{4}$

"."は何でもいい一文字を示します。この場合は"123-4567","123/4567","123@4567"等に合致します。


否定形

^[0-9]{3}[^0-9][0-9]{4}$

"^"は直後に来る文字ではない文字に合致します。この場合は"123-4567","123/4567","123@4567"等に合致しますが、"12394567"等の単純な8桁の数字には合致しません。