「正規表現を使用」

正規表現は、特定のパターン(構文)に従って結合される文字で、高度な検索や置換検索に使用できます。正規表現の実装では、ECMAScript正規表現パターン構文を使用します。

ヒント

無効な正規表現がないか、検索文字列の結果に一致するものがないか、ステータスバーを確認します。有効なパターンを作成するには、「式ビルダー」を使用します。

アイコン「正規表現を使用」「検索」ダイアログでアクティブな状態にします。

特殊パターン文字

特殊パターン文字とは、正規表現に現れる特殊な意味を持つ文字(またはシーケンス文字)で、直接文字列には記述できない文字や文字種別を表します。それぞれの特殊パターン文字は、ターゲットシーケンスの1文字とマッチします(量指定子がある場合を除く)。

文法

説明

\w

任意の英数字またはアンダースコア

test\wnewで検索すると、test2newまたはtest_newが見つかります

\W

英数字でもアンダースコアでもない文字

test\Wnewで検索すると、test.newまたはtest-newが見つかります

\d

任意の数字

test\d\dで検索すると、test21が見つかります

\D

任意の非数字の文字

test\D\Dで検索すると、test_aが見つかります

\s

スペース文字、タブ文字、または改行文字(CR)(LF)

test\s1で検索すると、test 1が見つかります

\S

スペース文字でもタブ文字でも改行文字でもない任意の文字(CR)(LF)

test\S1で検索すると、test_1が見つかります

\t

タブ文字

a\tbで検索すると、a     bが見つかります

\r\n

改行文字

ST エディタでは、行は"\r\n"で終わります(改行の後に新しい行が続く)。これらの文字は表示されませんが、ST エディタには存在し、検索できます。

オプションを参照:「拡張機能」 > 「オプション」 > 「プログラムオプション」 > 「エディタ」 > 「STエディタ」 -> 「行の終端の表示」

test\r\nで検索すると、test(CR)(LF)が見つかります

.

スペース文字、タブ文字、改行文字を含む任意の1文字(CR)(LF)

te.t1で検索すると、text1またはtest1が見つかります

\

正規表現で次の特殊文字をテキストとして検索する場合は、\(バックスラッシュ)を用いてエスケープする必要があります:^ $ \ . * + ? ( ) [ ] { } |

上記の特殊文字シーケンスを構成する文字をエスケープすることはできません。

test\(で検索すると、test(が見つかります

[class]

文字クラスに含まれる文字を検索します(以下の「文字クラス」を参照)。

[abc]で検索すると、ab、またはcが見つかります

[^class]

文字クラスに含まれない文字を検索します(以下の「文字クラス」を参照)。

[^xyz]で検索すると、xyz以外の任意の文字が見つかります。

関連トピック

量指定子

量指定子は、文字または特殊パターン文字の後に続きます。その文字が何度繰り返し一致するかを指定できます。

量指定子

一致回数

+

1回以上

pla+ceで検索すると、placeまたはplaaceが見つかります

*

0回以上

pla*ceで検索すると、plceまたはplaceまたはplaaceが見つかります

?

0回または1回

pla?ceで検索すると、plceまたはplaceが見つかります

{int}

ちょうどint

tyco{3}nで検索すると、tycooonが見つかります

{int,}

int回以上

tyco{2,}nで検索すると、tycoooonが見つかります

{min,max}

min回(最小)からmax回(最大)の間

tyco{1,2}nで検索すると、tyconまたはtycoonが見つかります

量指定子はデフォルトで最長一致です(検索条件を満たす、最も広い範囲でマッチさせます)。この動作は、量指定子の後に疑問符(?)を付加することにより、最短一致に変更することができます(検索条件を満たす、最も狭い範囲でマッチさせます)。

量指定子

一致回数

+?

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、など)。この後方参照番号は、検索または置換フィールドで再使用できます。

i(\d)Var\1で検索すると、i1Var1i2Var2またはi6Var6が見つかりますが、i1Var2は見つかりません

(\d)は、最初の後方参照(N=1)を作成する最初の数字の部分式です。この後方参照は\1で使用され、後方参照で検出されたものと同じコンテンツを識別します。

(?:部分式)

非キャプチャグループを定義します。

i(?:\d)Var(\d)Value\1で検索すると、i1Var2Value2またはi1Var3Value3が見つかります

この場合、\1で最初の後方参照(\d)を参照します。

\number

前に一致した部分式を同じ正規表現内で後から識別できるようにする後方参照を定義します。

例1:

検索パターン:[a-c](\d)(?:in|out)put_\1で検索すると、a1input_1またはb2output_2が見つかります

検索パターンの説明:

[a-c]で検索すると、abまたはcが見つかります

(\d)直後に1文字の数字が続き、この数字が後方参照として使用されます

(?:in|out)直後にinまたはoutが続き、この式は後方参照として使用されません

put_直後にput_が続きます

\1直後に最初の後方参照が続きます

後方参照は置換文字列でも使用できます。

例2:

検索パターン:iCount(\d)は、iCountの後に1文字の数字が続くことを検出し、この数字が後方参照として使用されます

置換パターン:iValue\1は検索文字列iCountiValueに置き換え、その直後に最初の後方参照が続きます

後方参照の結果は、(例えば3の場合)iCount3iValue3に置き換えられます

アサーション

アサーションは、文字列を一致させる位置を指定します。検索式でアサーションを使用すると、正規表現エンジンはターゲットシーケンスを進めず、文字を消費せず、指定された位置でのみ一致を検索します。

文字のグループ

説明

\b

ワード境界

\bisで検索すると、islandおよびisが見つかりますが、Thisは見つかりません

is\bで検索すると、Thisおよびisが見つかりますが、islandは見つかりません

\bis\bで検索すると、isが見つかりますが、islandは見つかりません

\B

非ワード境界

\Bisで検索すると、Thisが見つかりますが、islandは見つかりません

is\Bで検索すると、islandが見つかりますが、Thisは見つかりません

\Bis\Bで検索すると、Wishが見つかりますが、isislandは見つかりません

^

行の先頭

^iVarは、検索文字列が新しい行で始まる場合にのみiVarを検索します。^\s*iVarを使用して、行の先頭に空白がある    iVarを検索します。

ヒント

キャレットキー<^>を押した後に母音(例:a、e、i、o、)を入力すると、キャレットは曲折アクセント記号(つまり、â, ê, î, ô, û)と解釈されます。これを回避するには、<^>の後にスペースを押します。

$

行の終端

iVar$は、検索文字列が行の終端にある場合のみ、iVarを検索します。

(?=部分式)

肯定先読み

アサーション直後の文字は部分式と一致する必要がありますが、文字は消費されません。

Var(?=\d)で検索すると、後に数字が続くすべてのVarが見つかります

(?!部分式)

否定先読み

アサーション直後の文字は部分式と一致してはなりませんが、文字は消費されません。

Var(?!\d)で検索すると、後に数字が続かないすべてのVarが見つかります

代替

パターンには、さまざまな代替を含めることができます。

文字

説明

|

2つの代替パターンまたは部分式を分離する区切り文字。

(i|o)Varで検索すると、iVarまたはoVarが見つかります

正規表現で複数の代替パターンを使用するには、区切り文字演算子(|)で区切ります。いずれかの代替が一致する場合、すぐに正規表現が一致します。

部分式(グループまたはアサーション内)は、区切り演算子を使用してさまざまな代替を分離することもできます。

文字クラス

文字クラスは、角括弧[]で囲まれた文字のセットを定義します。

正規表現オブジェクトは、文字クラス全体をターゲットシーケンスの1文字とマッチさせようとします(量指定子がある場合を除く)。

文字クラスには、次の任意の組み合わせを含めることができます。

タイプ

説明

個々の文字

指定された文字は、クラスの一部と見なされます(特殊文字-(ハイフン)、[(左角括弧)、](右角括弧)を除く)。

\t、\dなどの特殊パターン文字はすべて、文字クラスの指定内で使用することもできます。

[abc]は、abまたはcを検索します

[^xyz]は、xyz以外の任意の文字を検索します

範囲

2つの有効な文字の間に- (ハイフン)を入れて、範囲を指定します。

[a-z]は、azの範囲の任意の小文字を検索します。

[^D-F]は、大文字のDEFを除く任意の文字を検索します。

[1-36-9]は、1~3または6~9の数字を検索します

[abc1-5]は、abまたはcまたは1~5の数字を検索します。

エスケープされた文字

文字-]\^には、文字クラス定義で特殊な意味があります。これらの文字を通常の文字として扱うには、文字の前にバックスラッシュを追加して、特殊な意味を無効にします。

[a\-z]Varは、aVar-VarまたはzVarを検索します

[ab\t\]]abタブまたは]を検索します

最終修正日: 2022-10-18このページに関するフィードバックお問い合わせ窓口