正規表現 (Visual Studio)
更新 : 2007 年 11 月
正規表現は、テキストのパターンを検索および置換するための、簡潔で柔軟な表記方法です。[クイック検索]、[フォルダを指定して検索]、[クイック置換]、または [フォルダを指定して置換] の操作を行う際に、[検索と置換] ウィンドウの [検索する文字列] ボックスおよび [置換後の文字列] ボックスで特定のセットの正規表現を使用できます。
正規表現を有効にするには、[検索と置換] ウィンドウの [検索オプション] を展開して、[使用するアプリケーション] を選択し、次に [正規表現] を選択します。[検索する文字列] ボックスおよび [置換後の文字列] ボックスの横の三角形の [式ビルダ] ボタンが有効になります。このボタンをクリックすると、よく使用する正規表現の一覧が表示されます。一覧で正規表現をクリックすると、その正規表現が [検索する文字列] ボックスまたは [置換後の文字列] ボックスのカーソル位置に挿入されます。[式ビルダ] の一番下にある [完全な文字一覧] をクリックすると、ヘルプ トピックが表示されます。トピックには、Visual Studio の [検索と置換] で認識されるすべての正規表現が含まれます。トピックに表示される正規表現をコピーして、[検索する文字列] ボックスまたは [置換後の文字列] ボックスに貼り付けることができます。
メモ : |
---|
[検索する文字列] ボックスおよび [置換後の文字列] ボックスで使用できる正規表現と .NET Framework プログラミングで有効な正規表現とでは、構文上の違いがあります。たとえば、[検索と置換] では、中かっこ ({}) はタグ付き正規表現に使用され、zo{1} という正規表現は、Alonzo1 や Gonzo1 のように、その後にタグ付けされた文字 "1" が続く zo のすべての繰り返しに一致します。これとは異なり、.NET Framework の正規表現の構文では中かっこ ({}) は量指定子を表します。このため、zo{1} という正規表現は、zone のようにその後に o が 1 つだけ続く z のすべての繰り返しに一致しますが、zoo には一致しません。 |
検索と置換に使用できる正規表現
[式ビルダ] に表示される、よく使う正規表現を次に示します。
式 |
構文 |
説明 |
例 |
---|---|---|---|
任意の文字 |
. |
改行を除く任意の 1 文字を検索します。 |
a.o は、"around" の "aro" および "about" の "abo" には一致しますが、"across" の "acro" には一致しません。 |
0 以上 |
* |
直前の正規表現の 0 回以上の繰り返しを検索します。一致する文字列の長さを最大限にします。 |
a*b は、"bat" の "b" および "about" の "ab" に一致します。 e.*e は、単語 "enterprise" に一致します。 |
1 以上 |
+ |
直前の正規表現の 1 回以上の繰り返しを検索します。 |
ac+ は、"race" や "ace" のように、文字 "a" とそれに続く少なくとも 1 つの "c" のインスタンスを含むものと一致します。 a.+s は、単語 "access" に一致します。 |
行頭 |
^ |
行頭を検索します。 |
^car は、単語 "car" がエディタの行で先頭の文字セットとして出現する場合のみ一致します。 |
行末 |
$ |
行末を検索します。 |
end$ は、単語 "end" がエディタの行末で最後の文字セットとして出現する場合のみ一致します。 |
最初の単語 |
< |
テキスト内のこの記号で指定する位置で始まる単語を検索します。 |
<in は、"inside" や "into" など文字列 "in" で始まる単語に一致します。 |
最後の単語 |
> |
テキスト内のこの記号で指定する位置で終わる単語を検索します。 |
ss> は、"across" や "loss" など文字列 "ss" で終わる単語に一致します。 |
改行 |
\n |
オペレーティング システム固有の改行を検索します。[置換] の正規表現では、改行が挿入されます。 |
End\nBegin は、"End" が行の最後の文字列で、"Begin" が次の行の先頭の文字列である場合のみ、単語 "End" と "Begin" に一致します。 [置換] の正規表現では、 Begin\nEnd は、最初の行で単語 "End" を "Begin" に置き換え、改行を挿入し、次に "Begin" を単語 "End" に置き換えます。 |
セット内の 1 文字 |
[] |
[] 内の文字のいずれかを検索します。文字の範囲を指定するには、[a-z] のように、開始と終了の文字をハイフン (-) でつなぎます。 |
be[n-t] は、"between" の "bet"、"beneath" の "ben"、および "beside" の "bes" には一致しますが、"below" の "bel" には一致しません。 |
セット外の 1 文字 |
[^...] |
^ に続く文字セット外の 1 文字を検索します。 |
be[^n-t] は、"before" の "bef"、"behind" の "beh"、および "below" の "bel" には一致しますが、"beneath" の "ben" には一致しません。 |
Or |
| |
OR 記号 (|) の前後いずれかの正規表現を検索します。多くの場合、グループ内で使用されます。 |
(sponge|mud) bath は "sponge bath" および "mud bath" に一致します。 |
エスケープ特殊文字 |
\ |
Matches the character that follows the backslash (\) as a literal.左中かっこ ({) やキャレット (^) など、正規表現で使用される文字を検索できます。 |
\^ はキャレット (^) を検索します。 |
タグ付き正規表現 |
{} |
かっこ内の正規表現でタグ付けされた文字列を検索します。 |
zo{1} は、"Alonzo1" および "Gonzo1" の "zo1" に一致しますが、"zone" の "zo" には一致しません。 |
C/C++ 識別子 |
:i |
正規表現 ([a-zA-Z_$][a-zA-Z0-9_$]*) の省略表現です。 |
任意の C/C++ 識別子を検索します。 |
引用符で囲まれた文字列 |
:q |
正規表現 (("[^"]*")|('[^']*')) の省略形です。一重引用符または二重引用符で囲まれたすべての文字および引用符自体を検索します。 |
:q は、"test quote" および 'test quote' には一致しますが、't of can't には一致しません。 |
スペースまたはタブ |
:b |
空白文字またはタブ文字を検索します。 |
Public:bInterface は、テキスト内の語句 "Public Interface" に一致します。 |
整数 |
:z |
正規表現 ([0-9]+) の省略形です。数字の任意の組み合わせを検索します。 |
"1"、"234"、"56" などの、任意の整数を検索します。 |
[検索と置換] の操作で有効な正規表現は多数あり、そのすべてが [式ビルダ] に表示されるわけではありません。次の正規表現は [式ビルダ] に表示されませんが、[検索する文字列] ボックスおよび [置換後の文字列] ボックスで使用できます。
式 |
構文 |
説明 |
例 |
---|---|---|---|
0 回以上の繰り返しで最短 |
@ |
直前の正規表現の 0 回以上の繰り返しを検索します。一致する文字列の長さを最小限にします。 |
e.@e は、"enterprise" の "ente" および "erprise" には一致しますが、完全な単語 "enterprise" には一致しません。 |
1 回以上の繰り返しで最短 |
# |
直前の正規表現の 1 回以上の繰り返しを検索します。一致する文字列の長さを最小限にします。 |
ac# は、"ace" のように、文字 "a" とそれに続く少なくとも 1 つの "c" のインスタンスを含むものと一致します。 a.#s は、単語 "access" の "acces" に一致します。 |
n 回繰り返す |
^n |
直前の正規表現の n 回の繰り返しを検索します。 |
[0-9]^4 は任意の 4 桁の数字を検索します。 |
グループ化 |
() |
一連の正規表現をまとめてグループ化できるようにします。2 つの異なる表現を 1 度に検索する場合、グループ化表現を使用して結合できます。 |
- [a-z][1-3] または - [1-10][a-z] と一致するものを検索する場合、これらを結合して ([a-z][1-3]) | ([1-10][a-z]) にすることができます。 |
n 番目のタグ付き正規表現 |
\n |
[検索] または [置換] の正規表現では、n 番目のタグ付き正規表現と一致する文字列を示します。n は 1 ~ 9 の数字です。 [置換] の正規表現では、\0 を指定すると、一致した文字列全体が挿入されます。 |
a{[0-9]} を検索し、\1 に置き換える場合、数字が後に続く "a" のすべての繰り返しは、その後ろに続く数字で置き換えられます。たとえば、"a1" は "1" に置き換えられ、同じく "a2" は "2" に置き換えられます。 |
右揃え |
\(w,n) |
[置換] の正規表現で、n 番目のタグ付き正規表現を、少なくとも w 文字分の幅があるフィールドで右揃えします。 |
a{[0-9]} を検索し、\(10,1) に置き換える場合、"an" の繰り返しは、その整数に置き換わり、空白 10 個のフィールドで右揃えされます。 |
左揃え |
\(-w,n) |
[置換] の正規表現で、n 番目のタグ付き正規表現を、少なくとも w 文字分の幅があるフィールドで左揃えします。 |
a{[0-9]} を検索し、\(10,1) に置き換える場合、"an" の繰り返しは、その整数に置き換わり、空白 10 個のフィールドで左揃えされます。 |
対象外 |
~(X) |
文字列でこの位置に X がある場合は検索されません。 |
real~(ity) では、"realty" や "really" の "real" は検索されますが、"reality" の "real" は検索されません。 |
英数字 |
:a |
英数字 ([a-zA-Z0-9]) を検索します。 |
"a"、"A"、"w"、"W"、"5" などの、任意の英数字を検索します。 |
英文字 |
:c |
英文字 ([a-zA-Z]) を検索します。 |
"a"、"A"、"w"、"W" などの、任意の英文字を検索します。 |
10 進数 |
:d |
数字 ([0-9]) を検索します。 |
"4"、"6" などの、任意の 1 桁の整数を検索します。 |
16 進数 |
:h |
16 進数 ([0-9a-fA-F]+) を検索します。 |
"1A"、"ef"、"007" などの、任意の 16 進数を検索します。 |
有理数 |
:n |
数値 (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+)) を検索します。 |
"2007"、"1.0"、"0.9" などの、任意の有理数を検索します。 |
英字文字列 |
:w |
英字文字列 ([a-zA-Z]+) を検索します。 |
英文字のみを含む任意の文字列を検索します。 |
エスケープ特殊文字 |
\e |
Unicode U+001B |
エスケープ制御文字を検索します。 |
ビープ音 |
\g |
Unicode U+0007 |
ビープ音制御文字を検索します。 |
Backspace |
\h |
Unicode U+0008 |
Backspace 制御文字を検索します。 |
タブ |
\t |
Unicode U+0009 |
タブ文字と一致します。 |
Unicode 文字 |
\x#### ??? \u#### |
#### が 16 進数の場合は、Unicode 値で指定される文字を検索します。ISO 10646 コード ポイント、またはサロゲート ペアの値を生成する 2 つの Unicode コード ポイントを使用して、基本多言語面 (BMP: Basic Multilingual Plane) の外部 (サロゲート) の文字を指定できます。 |
\u0065 は、文字 "e" に一致します。 |
Unicode 文字プロパティ データベースで一覧表示される一般カテゴリを指定するのに使用される 2 文字の略号を、次の表に示します。正規表現の文字セットの一部として、これらの略号を使用できます。たとえば、正規表現 [:Nd:Nl:No] では、任意の数字が検索されます。
Unicode 文字プロパティ データベースの詳細については、「Unicode Standard 5.0 Character Properties」を参照してください。
表現 |
構文 |
説明 |
---|---|---|
大文字 |
:Lu |
任意の大文字 1 つを検索します。 次に例を示します。 :Luhe では、"The" は検索されますが、"the" は検索されません。 |
小文字 |
:Ll |
任意の小文字 1 つを検索します。 次に例を示します。 :Llhe では、"the" は検索されますが、"The" は検索されません。 |
大文字と小文字の組み合わせ |
:Lt |
Nj や Dz など、大文字と小文字を 1 つずつ組み合わせた文字を検索します。 |
修飾子文字 |
:Lm |
コンマ、クロス アクセント、ダブル プライムなど、直前の文字に対する修飾を示す文字や区切り記号を検索します。 |
その他の文字 |
:Lo |
ゴート文字の ahsa など、その他の文字を検索します。 |
10 進数 |
:Nd |
0 ~ 9 などの 10 進数を検索します。対応する全角文字も検索します。 |
文字数値 |
:Nl |
ローマ数字や、ゼロを表す表意文字など、文字で表される数字を検索します。 |
その他の数字 |
:No |
オールド イタリックの数字の 1 など、その他の数字を検索します。 |
左かっこ |
:Ps |
左角かっこ ([) や左中かっこ ({) などの、左かっこを検索します。 |
右かっこ |
:Pe |
右角かっこ (]) や右中かっこ (}) などの、右かっこを検索します。 |
最初の二重引用符 |
:Pi |
最初の二重引用符を検索します。 |
最後の二重引用符 |
:Pf |
一重引用符および最後の二重引用符を検索します。 |
ダッシュ符号 |
:Pd |
ダッシュ符号を検索します。 |
接続符号 |
:Pc |
アンダースコアまたは下線を検索します。 |
その他の符号 |
:Po |
(、)、?、"、!、@、#、%、&、*、\、(:)、(;)、'、および / を検索します。 |
空白区切り |
:Zs |
空白を検索します。 |
行区切り |
:Zl |
Unicode 文字 U+2028 を検索します。 |
段落区切り |
:Zp |
Unicode 文字 U+2029 を検索します。 |
非空白記号 |
:Mn |
非空白記号を検索します。 |
連結記号 |
:Mc |
連結記号を検索します。 |
囲み記号 |
:Me |
囲み記号を検索します。 |
数学記号 |
:Sm |
+、=、~、|、<、および > を検索します。 |
通貨記号 |
:Sc |
$ などの通貨記号を検索します。 |
修飾子記号 |
:Sk |
曲アクセント記号、抑音符、長音記号など、修飾子記号を検索します。 |
その他の記号 |
:So |
著作権記号、段落記号、度記号など、その他の記号を検索します。 |
その他の制御 |
:Cc |
TAB や NEWLINE などの Unicode 制御文字を検索します。 |
書式指定制御文字 |
:Cf |
双方向制御文字などの書式指定制御文字。 |
サロゲート |
:Cs |
サロゲート ペアの片方を検索します。 |
個人用領域の任意の文字 |
:Co |
個人用領域の任意の文字を検索します。 |
他の未割り当て |
:Cn |
Unicode 文字に割り当てられていない文字を検索します。 |
標準の Unicode 文字プロパティの他に、次の追加プロパティを文字セットの一部として指定できることもあります。
表現 |
構文 |
説明 |
---|---|---|
Alpha |
:Al |
任意の 1 文字を検索します。 たとえば、:Alhe は "The"、"then"、"reached" などの単語を検索します。 |
数字 |
:Nu |
任意の数字を 1 つ検索します。 |
句読点 |
:Pu |
?、@、' などの、任意の区切り記号 1 つを検索します。 |
空白 |
:Wh |
すべての種類の空白を検索します。印刷用や表意文字の空白も含みます。 |
Bidi |
:Bi |
アラビア語やヘブライ語など、右から左に記述する文字を検索します。 |
ハングル |
:Ha |
韓国語のハングルおよびジャモの組み合わせを検索します。 |
ひらがな |
:Hi |
ひらがなを検索します。 |
カタカナ |
:Ka |
カタカナを検索します。 |
表意文字 |
:Id |
ハングル文字や漢字などの表意文字を検索します。 |