正規表現は、特定のパターン(構文)に従って結合される文字で、高度な検索や置換検索に使用できます。正規表現の実装では、ECMAScript正規表現パターン構文を使用します。
無効な正規表現がないか、検索文字列の結果に一致するものがないか、ステータスバーを確認します。有効なパターンを作成するには、「式ビルダー」を使用します。
アイコン「正規表現を使用」を「検索」ダイアログでアクティブな状態にします。 |
特殊パターン文字とは、正規表現に現れる特殊な意味を持つ文字(またはシーケンス文字)で、直接文字列には記述できない文字や文字種別を表します。それぞれの特殊パターン文字は、ターゲットシーケンスの1文字とマッチします(量指定子がある場合を除く)。
文法 |
説明 |
例 |
---|---|---|
\w |
任意の英数字またはアンダースコア |
|
\W |
英数字でもアンダースコアでもない文字 |
|
\d |
任意の数字 |
|
\D |
任意の非数字の文字 |
|
\s |
スペース文字、タブ文字、または改行文字(CR)(LF) |
|
\S |
スペース文字でもタブ文字でも改行文字でもない任意の文字(CR)(LF) |
|
\t |
タブ文字 |
|
\r\n |
改行文字 ST エディタでは、行は"\r\n"で終わります(改行の後に新しい行が続く)。これらの文字は表示されませんが、ST エディタには存在し、検索できます。 オプションを参照:「行の終端の表示」 -> |
|
|
スペース文字、タブ文字、改行文字を含む任意の1文字(CR)(LF) |
|
\ |
正規表現で次の特殊文字をテキストとして検索する場合は、\(バックスラッシュ)を用いてエスケープする必要があります:^ $ \ . * + ? ( ) [ ] { } | 上記の特殊文字シーケンスを構成する文字をエスケープすることはできません。 |
|
[class] |
文字クラスに含まれる文字を検索します(以下の「文字クラス」を参照)。 |
|
[^class] |
文字クラスに含まれない文字を検索します(以下の「文字クラス」を参照)。 |
|
量指定子は、文字または特殊パターン文字の後に続きます。その文字が何度繰り返し一致するかを指定できます。
量指定子 |
一致回数 |
例 |
---|---|---|
+ |
1回以上 |
|
* |
0回以上 |
|
? |
0回または1回 |
|
{int} |
ちょうどint回 |
|
{int,} |
int回以上 |
|
{min,max} |
min回(最小)からmax回(最大)の間 |
|
量指定子はデフォルトで最長一致です(検索条件を満たす、最も広い範囲でマッチさせます)。この動作は、量指定子の後に疑問符(?)を付加することにより、最短一致に変更することができます(検索条件を満たす、最も狭い範囲でマッチさせます)。
量指定子 |
一致回数 |
例 |
---|---|---|
+? |
1文字以上、最短一致 |
検索パターン: テキスト例:sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := ''; 検索結果:'abc'および'ABC' 最初の'(単一引用符)と次の'(単一引用符)との間を検索し、できる限り少ない文字で一致させます。 |
+ |
1文字以上、最長一致 |
検索パターン: テキスト例:sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := ''; 検索結果:'abc'; sVar2 := 'ABC'; sVar3 := '' 最初の'(単一引用符)と最後の'(単一引用符)との間を検索し、できる限り多くの文字で一致させます。 |
*? |
0文字以上、最短一致 |
検索パターン: テキスト例:sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := ''; 検索結果:'abc'および'ABC'および'' |
* |
0文字以上、最長一致 |
検索パターン: テキスト例:sVar1 := 'abc'; sVar2 := 'ABC'; sVar3 := ''; 検索結果:'abc'; sVar2 := 'ABC'; sVar3 := '' |
グループでは、(単一の文字ではなく)一連の文字に量指定子を適用できます。
文字のグループ |
説明 |
例 |
---|---|---|
(部分式) |
ターゲットシーケンス内の部分式を表す文字をキャプチャし、部分一致として保存します。各部分一致は開始カッコの出現順に番号が付けられます(最初の部分一致は後方参照番号1、2番目は後方参照番号2、など)。この後方参照番号は、検索または置換フィールドで再使用できます。 |
(\d)は、最初の後方参照(N=1)を作成する最初の数字の部分式です。この後方参照は\1で使用され、後方参照で検出されたものと同じコンテンツを識別します。 |
(?:部分式) |
非キャプチャグループを定義します。 |
この場合、 |
\number |
前に一致した部分式を同じ正規表現内で後から識別できるようにする後方参照を定義します。 |
例1: 検索パターン: 検索パターンの説明:
|
後方参照は置換文字列でも使用できます。 |
例2: 検索パターン: 置換パターン: 後方参照の結果は、(例えば3の場合)iCount3はiValue3に置き換えられます |
アサーションは、文字列を一致させる位置を指定します。検索式でアサーションを使用すると、正規表現エンジンはターゲットシーケンスを進めず、文字を消費せず、指定された位置でのみ一致を検索します。
文字のグループ |
説明 |
例 |
---|---|---|
\b |
ワード境界 |
|
\B |
非ワード境界 |
|
^ |
行の先頭 |
ヒント キャレットキー<^>を押した後に母音(例:a、e、i、o、)を入力すると、キャレットは曲折アクセント記号(つまり、â, ê, î, ô, û)と解釈されます。これを回避するには、<^>の後にスペースを押します。 |
$ |
行の終端 |
|
(?=部分式) |
肯定先読み アサーション直後の文字は部分式と一致する必要がありますが、文字は消費されません。 |
|
(?!部分式) |
否定先読み アサーション直後の文字は部分式と一致してはなりませんが、文字は消費されません。 |
|
パターンには、さまざまな代替を含めることができます。
文字 |
説明 |
例 |
---|---|---|
| |
2つの代替パターンまたは部分式を分離する区切り文字。 |
|
正規表現で複数の代替パターンを使用するには、区切り文字演算子(|)で区切ります。いずれかの代替が一致する場合、すぐに正規表現が一致します。
部分式(グループまたはアサーション内)は、区切り演算子を使用してさまざまな代替を分離することもできます。
文字クラスは、角括弧[]で囲まれた文字のセットを定義します。
正規表現オブジェクトは、文字クラス全体をターゲットシーケンスの1文字とマッチさせようとします(量指定子がある場合を除く)。
文字クラスには、次の任意の組み合わせを含めることができます。
タイプ |
説明 |
例 |
---|---|---|
個々の文字 |
指定された文字は、クラスの一部と見なされます(特殊文字-(ハイフン)、[(左角括弧)、](右角括弧)を除く)。 \t、\dなどの特殊パターン文字はすべて、文字クラスの指定内で使用することもできます。 |
|
範囲 |
2つの有効な文字の間に- (ハイフン)を入れて、範囲を指定します。 |
|
エスケープされた文字 |
文字-]\^には、文字クラス定義で特殊な意味があります。これらの文字を通常の文字として扱うには、文字の前にバックスラッシュを追加して、特殊な意味を無効にします。 |
|