正規表現の文法

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 文字 “\” にマッチします。
  • “((^^))+” と書くと最も外側以外のかっこ () と ^ が全てエスケープされて (^^) , (^^)(^^) や (^^)(^^)(^^)(^^)(^^)(^^)(^^) など、(^^) をたくさん連ねたものがマッチします。
正規表現とは何か? 正規表現の文法 正規表現とオートマトン