26.1.2 正規表現の文法

正規表現の文法をまとめて説明します.

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