正規表現(パターンマッチング)とは、文字列の特徴を「行頭の2文字」「cから始まる英単語」「3桁の数字」というようにパターン化し、特殊記号を使用して表現するものです。
パターン化することで、検索や置換を行う際に多少の違いがある文字列もまとめて指定することができます。
▼<例>パターンエディターにて「シンボル」ボタンから選択できる正規表現の特殊記号
■基本の特殊記号
下記は正規表現で使用する基本的な特殊記号の解説と一致する文字(一文字)の例です。
特殊記号 |
解説 |
一致する文字(一文字)の例 |
.(ドット) |
改行( \n )以外の任意の文字。 |
a, 1, /, ?, . |
\d |
任意の十進数の数字。 |
0, 1, 2, … 9 |
\D |
数字以外の任意の文字。 |
a, /, ?, . |
\s |
任意の空白文字。 |
空白, タブ, キャリッジリターン |
\S |
空白以外の任意の文字。 |
a, 1, /, ?, . |
\w |
任意の英数文字とアンダーバー。 |
a, … z, A, … Z, 0, … 9, _ |
\W |
英数文字とアンダーバー以外の任意の文字。 |
/, ?, . |
\n |
改行文字。 |
改行 |
\r |
行頭復帰文字。 |
キャリッジリターン |
\t |
タブ文字。 |
タブ |
“.”または”\”のような特殊文字を通常の文字として使用したい場合は、その文字の前に”\”(バックスラッシュ)を追加することで可能です。
<例>
・ ”.”をピリオドとして使用したい場合 → \.
・ ”\”をバックスラッシュとして使用したい場合 → \\
■繰り返しの特殊記号
下記は繰り返しに一致する特殊記号です。
特殊記号 |
解説 |
* |
直前の文字の0回以上の繰り返し。 |
+ |
直前の文字の1回以上の繰り返し。 |
{n} |
直前の文字のn回の繰り返し。 |
{n,} |
直前の文字のn回以上の繰り返し。 |
{m,n} |
直前の文字の m 回以上,n 回以下の繰り返し。 |
? |
直前の文字の0回または1回の繰り返し。 |
特殊記号を組み合わせることで様々なパターンを指定することができます。
特に、基本の特殊記号の” . ”と繰り返しの特殊記号の” * ”を組み合わせた” .* ”は頻繁に使用されるパターンなので覚えておきましょう。
パターン |
解説 |
一致する文字列の例 |
.* |
任意のテキスト。 |
Design Studio, 1213, 「」(空のテキスト) |
■サブパターン
()を使用することでパターンをサブパターンの集合として整理することができます。
正規表現 |
解説 |
(abc)* |
任意のテキスト”abc”の0回以上の繰り返しと一致する。「」(空のテキスト), abc, |
(.*)(.*) |
一致するテキストが「abc」の場合、最初のサブパターンが「abc」に該当し、第二 |
■最短一致(特殊動作)
「最短一致」とは、本来「直前の文字の0回または1回に一致」の意味の”?”を、特定の位置で記述することによって最も短い文字列のみを指定する記述方法です。
「.*」と記述した場合、正規表現では原則最長一致で処理されます。
たとえば、<p>abc</p>という文字列の最初のpタグ( <p> )のみとマッチしたい場合に<.*>
と記述すると、”<” と ”>” の間にあるテキストが最も長い文字列がマッチするため、 </p> の”>”直前まで(”p>abc</p”)が「.*」に該当したと判定されます。
このため、<.*>という記述では<p>abc</p>という文字列全体がマッチしてしまいます。
これを防ぐためには、下記のように ”>” の前に ”?” (最短一致記号)をつけます。
<.*?>
上記の正規表現では、”<” と ”>” の間にあるテキストが最も短い文字列がマッチするため、<p>タグのみがマッチします。
下記は最短一致記号を使用した正規表現の例です。
パターン |
解説 |
*? |
先行するサブパターンまたは空のテキストの任意の数での繰り返しに一致。{0,}?の |
+? |
先行するサブパターンの1回以上の繰り返しに一致。{1,}?の省略形。できるだけ少な |
{m,n}? |
m回からn回までの先行するサブパターンの繰り返しに一致。できるだけ少ないサブパ |
{m,}? |
m回またはそれ以上の先行するサブパターンの繰り返しに一致。できるだけ少ないサブ |
(.*?)(.*) |
一致するテキストが「abc」の場合、最初のサブパターン(.*?)は任意のテキストの0回 |
(.+?)(.*) |
一致するテキストが「abc」の場合、最初のサブパターン(.*?)は任意の文字の1回以上の |
■セット
複数の文字のうち一文字とのみ照合させたい場合、”[]” (ブラケット) を使用して複数の文字をセットでパターンに記述することができます。
パターン |
解説 |
一致する文字列の例 |
[abc] |
a か bか c のいずれか 1文字に一致 。 |
a, b, c |
[^ abc] |
a と bと c 以外の任意の1文字。 |
d, 1, /, ?, . |
[a-z] |
aからzの範囲内の任意の1文字。 |
a, b, c, … z |
■複数条件指定
“|”(パイプ)を使用することで、条件を複数指定することができます。
パターン |
解説 |
a|b |
サブパターンa がすべて一致、またはサブパターン b がすべて一致。 |
下記は応用的な正規表現の一例です。
パターン |
解説 |
一致する文字列の例 |
.an |
「an」で終わる3文字のテキスト。 |
can, man |
[a-dkx-z] |
a から d、k、x から z のいずれか1文字に一致。 |
a, b, c, d, k, x, y, z |
\w*\d |
一致する文字列が右の例の「abc1abc1」の場合、 |
abc1abc1, ab2, 0 |
\w*?\d |
検索対象の文字列中に「abc1abc1」があった場合、 |
abc1, ab2, 0 |
\d\d\s\d\d |
2 桁の数字で始まり、空白と2桁の数字で終わる5文字 |
01 23, 72 13 |
a\.b\\c |
“.”と”\”は直前に”\”(バックスラッシュ)がついている |
a.b\c |
(¥d¥d){1,2} |
2つまたは4つの数字のいずれかに一致する。 |
12, 0357 |
(good)?bye |
「good」の0回以上の繰り返しで始まり「bye」で終わ |
goodbye, bye |
([bn]a){3,3} |
“b” か “n” の後に “a” が続いて、これが 3 回繰り返され |
banana, babana, nanana |
より応用的な正規表現を用いたパターンの記述方法についてはDSにてパターンで文字を抽出する方法を参照してください。
注意事項
・\nや\rなどの改行文字はDS、DA、Chromiumで仕様が異なります。
DS:「\r\n」「\r」「\n」が使用可能
DA:「\r」「\n」が使用可能 ※「\r\n」も可能だが、2回改行される
Chromium:「\r\n」「\r」が使用可能