正規表現で文字列内の位置を表すメタキャラクタ

正規表現

正規表現には文字を検索するためのメタキャラクタ(正規表現パターンを構成する文字)の他に、文字列内の位置を検索するためのメタキャラクタが用意されています。

位置を表す正規表現パターンを指定することで、行の先頭や末尾、単語の境界線などを検索することができます。

今回は、正規表現で文字列内の位置を検索するために用意されているメタキャラクタを紹介します。

行の先頭にマッチする「^」

「^」は行の先頭に一致します。

例えば「Yahoo!」の先頭にマッチさせるには、「^Y」と指定します。ここでの「^」は「Y」の前の位置を表します。
「^Y」は行頭が「Y」で始まるすべての行に一致します。

行の末尾にマッチする「$」

「$」は行の末尾に一致します。

例えば「Yahoo!」の末尾にマッチさせるには、「!$」と指定します。ここでの「$」は「!」の後の位置を表します。
「!$」は行末が「!」で終わるすべての行に一致します。

単語の境界の空文字にマッチする 「\b」

「\b」は単語の境界(単語の両端)の空文字(画面のディスプレイ上では表示されない概念的な区切り)に一致します。
通常英字では半角スペースが単語の境界になりますが、正規表現上での単語と単語の間の半角スペースは、単語の境界ではなく半角スペース文字として認識されます。正規表現での単語の境界は目に見えないから文字列となります。

例えば「blog\b」という正規表現パターンは、「blog」の「g」にマッチします。しかし「blogs」の「g」にはマッチしません。

動作環境によっては「\b」はバックスペースを意味する場合があります。
動作環境によっては「\b」の代わりに「\y」が使用できる場合もあります。

単語と接しない空文字(単語の境界以外)にマッチする「\B」

「\B」は単語の境界以外の空文字に一致します。
「\B」(bが大文字)は「\b」(bが小文字)とは逆の意味のメタキャラクタです。

例えば「blog\B」という正規表現パターンは、「blogs」の「g」にマッチしますが、「blog」の「g」にはマッチしません。

動作環境によっては「\B」の代わりに「\Y」が使用できる場合もあります。

単語の先頭にマッチする「\<」

「\<」は単語の先頭の境界に一致します。(動作環境によっては使用できない場合があります。) 例えば「\単語の末尾にマッチする 「\>」

「\>」は単語の末尾の境界に一致します。(「\<」と同様に、動作環境によっては使用できない場合があります。) 例えば「a\>」であれば、単語の末尾が「a」の場合(「a」で終わる単語)にマッチします。

文字列の先頭にマッチする 「\A」

「\A」は文字列の先頭に一致します。

文字列の末尾「\z」にマッチする

「\z」は文字列の末尾に一致します。

文字列の末尾または終端の改行にマッチする「\Z」

「\Z」は文字列の末尾または終端の改行(改行の直前)に一致します。

指定した文字列のみの行にマッチさせる「^…$」

「^…$」を指定することで「…」部分の文字列のみの行に一致させることができます。

例えば「「^あいうえお$」」と指定すると、行全体が”あいうえお”の行にマッチします。

改行のみの行にマッチさせる「^$」

「^$」を指定することで改行のみ(行の先頭と末尾が改行)の行に一致します。