ホームに戻る
関連 :
先読み・後読み 貪欲さ キャプチャ
目次 :

正規表現とは

特定のパターンに合致した文字列を検索・抽出すること。パターンマッチングとも呼ばれる。
融通の利かない通常のキーワード(全文一致)検索とは異なり、「曖昧に」「パターンに一致する複数の箇所を」抽出することができる。
テキストエディタや開発環境の多くが対応しているが、Microsoft Officeは未対応(但しVBAでは使用可)。

例) 03-xxxx-yyyy (03-で始まる市内局番4桁の電話番号) を抽出したい
03-3456-7890 03-1111-2222 (岩崎礼二) 06-6543-2109 03-888-9990

主要なメタ文字

文字種を表すもの

文字
*1
数字
*2
_
(アンダー
スコア)
*2
その他の
記号
*3

(スペース)
*2
\t
(タブ)
\r
(CR)
\n
(LF)
. (ドット) (改行を除く)すべての文字
\w 単語を構成する文字
\W 単語を構成する文字以外
\s 空白文字
\S 空白文字以外
\d 数字
\D 数字以外
\t タブ
\r CR (復帰)
\n LF (改行)
*1 : 英字、ひらがな、カタカナ、漢字、ギリシャ文字、キリル文字など、数字と記号を除くすべて(半角および全角)
*2 : 半角および全角
*3 : アンダースコアを除くすべての記号(半角および全角)
\s (空白文字)が改行(\r / \n)にもヒットする点に注意。

位置を表すもの

^行頭にマッチ
$行末にマッチ
\b単語境界(先頭・末尾)にマッチ
\B単語境界以外にマッチ
「行末」は、その行に改行文字が存在する場合は改行文字の直前を指す。即ち「行」には改行文字を含まない。

「単語境界」とは : 「単語を構成する文字(英数字とアンダースコア)」が連続している範囲を「単語」とみなし、単語とそうでない部分の境界を指す。
即ち、単語の先頭の直前、および単語の末尾の直後を指す。

例) The next number is "20th_November".
薄緑地が単語、黄地が単語境界。
The next number is " 20th_November ".
\bnext\b」とすると、単語 "next" にマッチする。"next_xxx" などにはマッチしない。

量(繰り返し)を表すもの

*0回以上の繰り返しにマッチ
+1回以上の繰り返しにマッチ
{n}n回の繰り返しにマッチ
{n,}n回以上の繰り返しにマッチ
{n,m}n回以上m回以下の繰り返しにマッチ
?0回または1回の出現にマッチ

集合を表すもの

[abc]"a","b","c"いずれかの文字にマッチ
[^abc]"a","b","c"以外の文字にマッチ
[A-Z]"A"~"Z"(英大文字 : 半角)にマッチ
[a-z]"a"~"z"(英小文字 : 全角)にマッチ
[0-9]"0"~"9"(半角数字)にマッチ
[0-9]"0"~"9"(全角数字)にマッチ
klm|xyz"klm"または"xyz"にマッチ
(Upp|Low)er"Upper"または"Lower"にマッチ

メタ文字として用いられる特殊文字

\ (バックスラッシュ・円記号)をつけることでその文字自身を表す
例) "\." ⇒ . (ドット) 、"\*" ⇒ *(アスタリスク)

パターンの例

^[\r\n]+行頭から改行文字(CRまたはLF)が1回以上連続している ⇒ 空行
[a-zA-Z]"a"~"z"および"A"~"Z" ⇒ 英字
int32\s+\b\w+\bint32 / 空白文字(ブランク・タブ) /
単語境界(語頭) / 単語構成文字の繰り返し(1回以上) / 単語境界(語尾)
⇒ int32 型を返す関数名(括弧の前まで)
\d{1,3}-\d{1,3}-\d{1,3}-\d{1,3}数字1から3桁 / ハイフォン ... ⇒ IPアドレス