はじめての正規表現


正規表現とは

文字列をパターンとして表現する方法で、これを駆使すると複雑な条件で検索、置換を行うことができます。
ここでは正規表現未経験者向けに、まず覚えるべき簡単な文法をいくつか紹介します。

|:or検索

|(パイプ)を使うとor検索ができます。
例えば、検索する文字列を、「りんご|みかん」、とすると、「りんご」と「みかん」の2単語を一度で検索できます。
「りんご|みかん|ぶどう」のように3つ以上の検索も可能です。

.*:任意の文字列

.(ピリオド)は任意の1文字を表します。また、*(アスタリスク)は0回以上の繰り返しを表します。
この2つの組み合わせの「.*」で、ワイルドカードの「*」と似たような意味になります。
例えば、「う.*い」とすると、「うい」、「うざい」、「うるさい」、「うさんくさい」などがヒットします。
但し、正規表現の繰り返しはデフォルトで最長一致になるので、「うるさいにかい」という言葉があった場合は、
この言葉全部の「うるさいにかい」でヒットします。
こういう場合に、短くヒットさせたい場合は、繰り返しの後に?(クエスチョン)を入れることで、
繰り返しを最短一致にすることができます。
「う.*?い」とすると、「うるさいにかい」となり、「うるさい」のみにヒットします。

[]:[]内の1文字

[](ブラケット)は[]内の1文字を表します。
例えば[abc]は、aまたはbまたはcになります。
また[a-z]のような書き方もでき、これはaからzまでの1文字になります。
[0-9]と書くと任意の数字1文字になりますが、これを\dと書くこともできます。

{}:繰り返し

{}(ブレイス)は繰り返しを表します。
{2}は2回繰り返しになります。
「\d{2}」とすると2桁の数字になります。(「01」なども含む」)
「01」などを含まず、10から99の数字にしたい場合は、「[1-9]\d」とします。

():グループ化

()(パーレン)はグループ化を表します。
「(りんご|みかん)狩り」とすると、「りんご狩り」、「みかん狩り」がヒットします。
「(MS )?Excel」とすると「MS 」の0回以上1回以下の繰り返しに「Excel」を加えた文字列になります。
つまり「MS Excel」と「Excel」がヒットします。
ここでの?(クエスチョン)は、先程の「繰り返しの後の最短一致」のものとは違い、
*(アスタリスク)「0回以上の繰り返し」と似たものです。

ここで繰り返しを表す記号をまとめておきましょう。

*(アスタリスク):0回以上の繰り返し
+(プラス):1回以上の繰り返し
?(クエスチョン):0回以上1回以下の繰り返し

また、置換時のキャプチャ参照(後述)にもこのグループ化を使います。

$n:置換時のキャプチャ参照

置換時に、置換前の元の文字列を使った置換ができます。
置換後の文字列に$nとすると、n番目のグループを表します。

例えば、「2012/08/19」を「2012年08月19日」などに置換したい場合は、
検索する文字列を「(\d{4})/(\d{2})/(\d{2})」として、
置換後の文字列を「$1年$2月$3日」とします。
この場合、
1番目のグループとは最初の()で囲まれた部分の\d{4}となり、年の部分、
2番目のグループとは次の()で囲まれた部分の\d{2}となり、月の部分、
3番目のグループとは最後の()で囲まれた部分の\d{2}となり、日の部分、
になります。

このキャプチャ参照はちょっと難しいですが、大変便利なので、是非覚えてください。


正規表現検索に戻ります

トップに戻ります


お探しの情報は見つかりましたか?
まだの方はこちらをどうぞ。
Google

PageTop