satoshiabe.jp : Regular Expressions MEMO
HOME > DOCUMENTS > Regular Expressions MEMO
まえがき
ここは、正規表現 (Regular Expressions) に関する自分用メモのページ。 正規表現についてのドキュメントは Web にも豊富にあるため、このページでは基本的なことを述べず、できるだけ実用的なケースを考えたい。
空行にマッチする正規表現
以下のサンプルは、空行にマッチする正規表現。
/^$/
ただし、よくあるケースが、空行に見えるが、実は、スペースかタブが入力されている、という行。 その場合、/^$/ ではマッチしないため、以下のように指定する。 文字クラスでスペースとタブを * で指定する。
/^[ ]*$/
マッチする回数を指定する正規表現
以下のサンプルは、東京都の電話番号 (03-xxxx-xxxx) にマッチする正規表現だ。
/^03-[0-9]\{4\}-[0-9]\{4\}$/
サンプルでは以下の構文を使用している。
{m} : 直前の文字の m 回にマッチする {m,} : 直前の文字の m 回以上にマッチする {m,n} : 直前の文字の m 回以上 n 回以下にマッチする
以下のサンプルは、- がスペースの場合 (03 xxxx xxxx) にでも対応できる。
/^03( |-)[0-9]\{4\}( |-)[0-9]\{4\}$/
最初に出現する任意の文字にマッチする正規表現
正規表現は、文字列に対して最長一致する。 サンプルのように、. に着目し、最初の aaa にマッチさせようとすると、実は、aaa.bbb.ccc でマッチしてしまっている。
aaa.bbb.ccc.html /^..*\./
そのためには、以下のように指定する。 + は、「直前の文字 1 文字以上」を指定するメタキャラクタだ。
/^[^.]+/
リンク
Manpage of REGEX (linux.or.jp)