正規表現
正規表現を使うと、指定したパターンにあてはまるデータを検索できます。
例えば、郵便番号は
数字3文字+ハイフン+数字4文字
なので、
\d{3}-\d{4}
という正規表現で検索できます。
このように、記号や数字1を用いて パターン を書き表す方法が正規表現です。
注意
日本語版のパソコンでは \ (バックスラッシュ) と ¥ (円マーク) は同じものと読み替えてください。
Tip
正規表現では、パターンにあてはまることを、一致すると表現します。
例えば、正規表現の . は「任意の1文字に一致する」と説明されます。
Note
置換する文字列に $(または\)と数字を使って置換前の文字列の一部を取り込む(参照する)ことができます。
参照についてはこのページの最後で説明しています。
あいまい検索との違い
エクセルのあいまい検索で利用できる*と?(ワイルドカード)は、
正規表現では別な意味の特殊文字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 |