26.1.2. 正規表現の文法
正規表現の文法をまとめて説明します。
正規表現の書き方は使う環境 (テキストエディタの種類や grep, sed, awk など) によって若干異なります。また環境によっては、以下に挙げる正規表現のうちいくつかが使えないこともあります。もし正規表現を使おうとして「正しい文法のはずなのに使えない」と思ったら、プログラムのマニュアルなどを調べてみてください。
文字列の繰り返し #
クエスチョンマーク ?、アスタリスク * とプラス + は、それぞれ直前にある文字の「0 回または 1 回の繰り返し」「0 回以上の繰り返し」「1 回以上の繰り返し」を意味します。それぞれの例を挙げます。
- “colou?r” は color と colour の両方にマッチしますが、colouur にはマッチしません
- “Goo+gle” は Google, Gooogle, Goooogle,… などの全てにマッチします。
文字種を表す記号 #
ドット . は任意の 1 文字を意味します。
- “a..” は a から始まる任意の 3 文字 (この文字には空白を含みます) にマッチします。
- “.*” は空文字列を含む任意の文字列にマッチします。
また “\s”, “\d” はそれぞれ空白文字と数字にマッチします。
文字グループを表す記号 #
角かっこ [] の中に文字をいくつか書くと「かっこの中に書かれた文字のいずれかにマッチ」という意味になります。たとえば次のような感じです。
- “[ceh]at” は cat, eat または hat のいずれかにマッチします。
- “[cz]?sh” は sh, csh または zsh のいずれかにマッチします。
かっこの中に書きたい文字が多い場合、ハイフン – を使うことで「どこからどこまで」という形の指定ができます。たとえば
- “10[0-9]” は 100, 101, … , 109 のいずれかにマッチします。これは “10\d” と同じ意味になります。
- “[a-z]make” はアルファベット小文字 +make の形をした文字列にマッチします。
左のかっこの直後に ^ をつけ “[^ …]” と書くと、「かっこの中に書かれていない文字のいずれかにマッチ」という意味になります。
行頭と行末 #
ハット ^ とドル $ はそれぞれ行頭と行末を意味します。たとえば
- “^Section 1” は、行の頭にある “Section 1” にマッチします。
- “,$” は行末のカンマにマッチします。
グルーピング #
丸かっこ () の中に縦線 | で区切って単語をならべると、その中のいずれかにマッチします。たとえば
- “(h|c)at” と書くと hat または cat にマッチします。これは “[hc]at” と同じ意味です。
- “(http|https|ftp)://.*” と書くと、“http://” , “https://” または “ftp://” から始まる全ての文字列にマッチします。
特殊文字のエスケープ #
正規表現中で特別な意味を持つ記号 (たとえばバックスラッシュ \、かっこ ()、^ や $ など) を検索したい場合、その記号の直前にバックスラッシュ \ をつけます。
- “\” と書くと、バックスラッシュ 1 文字 “\” にマッチします。
- “((^^))+” と書くと最も外側以外のかっこ () と ^ が全てエスケープされて (^^) , (^^)(^^) や (^^)(^^)(^^)(^^)(^^)(^^)(^^) など、(^^) をたくさん連ねたものがマッチします。