コンテンツにスキップ

正規表現

正規表現を使うと、指定したパターンにあてはまるデータを検索できます。

例えば、郵便番号は 数字3文字+ハイフン+数字4文字 なので、 \d{3}-\d{4} という正規表現で検索できます。

このように、記号や数字1を用いて パターン を書き表す方法が正規表現です。

注意

日本語版のパソコンでは \ (バックスラッシュ) と ¥ (円マーク) は同じものと読み替えてください。

Tip

正規表現では、パターンにあてはまることを、一致すると表現します。

例えば、正規表現の . は「任意の1文字に一致する」と説明されます。

Note

置換する文字列に $(または\)と数字を使って置換前の文字列の一部を取り込む(参照する)ことができます。

参照についてはこのページの最後で説明しています。

Info

GrepAddinでは、VBScript互換の正規表現を使用しています。

利用できるすべての構文については 正規表現の構文 | Microsoft Learn を参照してください。

あいまい検索との違い

エクセルのあいまい検索で利用できる*?(ワイルドカード)は、 正規表現では別な意味の特殊文字1なので、 そのままでは意図した結果になりません。

あいまい検索をしたいときには、代わりに同じ意味の正規表現を使います。

ワイルドカード 正規表現 一致するパターン
* .* ゼロ文字以上の任意の文字列
? . 1文字の任意の文字

正規表現の構文

通常の文字

特殊文字1以外の文字は、 その文字そのもの を表します。

郵便番号の例( \d{3}-\d{4} )では、 -ハイフンそのもの を表しています。

Tip

ということは、特殊文字を含まないパターンはパターンそのものを表すことになります。 正規表現で Green は Green に一致します。

エスケープ

特殊文字1そのもの を表したいときには、直前に \ をつけてエスケープします。

例えば \d{3}そのもの を検索するには、 \\d\{3\} と書きます。

文字クラス

どんな文字か を表します。

郵便番号の例( \d{3}-\d{4} )では、 \d数字 を表す文字クラスです。

主な文字クラス…
文字クラス 一致する文字
. 任意の文字
\d 数字
\w 単語に使用される文字
[ABC] 文字セット(AかBかCに一致)
[^ABC] 除外する文字セット(ABC以外に一致)
[A-Z] 文字範囲(大文字の英字に一致)
[^0-9] 除外する文字範囲(数字以外に一致)

量指定子

何個あるか を表します。

郵便番号の例( \d{3}-\d{4} )では、 {3}{4} がそれぞれ 3個4個 を表す量指定子です。

量指定子…
量指定子 一致する個数
* ゼロ個以上
+ 1個以上
? ゼロ個か1個
{n} n
{m,} m 個以上
{l, u} l 個以上 u 個以下

位置指定

どこにあるか を表します。

例えばデータの先頭が郵便番号で始まっているセルを検索するには、 ^\d{3}-\d{4} と書きます。

この例では、 ^ が先頭を表す位置指定です。

主な位置指定…
位置指定 一致する位置
^ 先頭
$ 末尾

グループ

() で囲んで、パターンをグループ化することができます。

グループに量指定子をつけて、 (ABC)+ とすると、指定した個数のグループ(この例ではABCの繰り返し)に一致します。

OR(または)

| を使って OR(または)を表すことができます。

例えば みかん|りんご は みかん と りんご のどちらにも一致します。

Tip

ORはパターンの一部に使うことが多いため、(a|b|...) のように括弧の中で使うのが一般的です。

正規表現の例

(Mrs¥. )?Gr(ee){1,2}n( Apple)?$ は、文字列の最後が

  • Green
  • Greeeen
  • Mrs. Green
  • Mrs. Greeeen
  • Green Apple
  • Greeeen Apple
  • Mrs. Green Apple
  • Mrs. Greeeen Apple

のいずれかで終わるものに一致します。

Tip

Greeeen か Mrs. GREEN APPLE で終わる文字列にしか一致させたくない場合には、(Greeeen|Mrs\. GREEN APPLE)$ と書きます。

置換前の文字列の一部を取り込む

置換する文字列に $(または\)と数字を使って置換前の文字列の一部を取り込む(参照する)ことができます。

$(または\)に続く数字は正規表現のグループの番号で、最初のグループは $1 で参照できます。

例えば、郵便番号の正規表現を (\d{3})-?(\d{4}) と書き換えると、数字部分がふたつのグループになります。
ハイフンは -? にしたので、ハイフンがない数字7桁にも一致するようになります。

これを使って、置換する文字列を $1-$2 とすると、ハイフンがない数字7桁を3桁と4桁にハイフンで区切ることができます。

Tip

グループ番号の直後に数字を書きたい場合には、グループ番号を {} で囲んでください。

参照 説明
$12 12番目のグループを参照(グループ数が12に満たない場合には ${1}2 とみなします2
${1}2 1番目のグループの参照と、その後ろに数字の2

  1. 正規表現では、パターンを表すために使われる記号や数字のことを 特殊文字 または メタキャラクタ と呼びます。 

  2. GrepAddinバージョン0.9bでは、半角と全角を区別しない場合に限りこの通り動作しない既知の不具合があります。