正規表現の文法をまとめて説明します.
正規表現の書き方は使う環境 (テキストエディタの種類や 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 文字 “\” にマッチします.
- “(\(\^\^\))+” と書くと最も外側以外のかっこ () と ^ が全てエスケープされて (^^) , (^^)(^^) や (^^)(^^)(^^)(^^)(^^)(^^)(^^) など,(^^) をたくさん連ねたものがマッチします.