正規表現によるテキストの検索
正規表現は、文字列のパターンの検索や置換のための、正確で柔軟性の高い表記方法です。 SQL Server Management Studio の [検索と置換] ダイアログ ボックスの [検索する文字列] フィールドでは、特定のセットの正規表現を使用できます。
正規表現を使用して検索を行うには
[クイック検索]、[フォルダーを指定して検索]、 [クイック置換]、 [フォルダーを指定して置換]の各操作を実行するときに [検索する文字列] フィールドで正規表現が使用できるようにするには、 [検索オプション] の下の [条件]をオンにし、 [正規表現]を選択します。
[検索する文字列] フィールドの横にある三角形の 参照一覧 ボタンが使用可能になります。 このボタンをクリックすると、一般的に使用される正規表現の一覧が表示されます。 正規表現ビルダーから項目を選択すると、その項目が [検索する文字列] の文字列に挿入されます。
Note
[検索する文字列] の文字列で使用できる正規表現の構文と、Microsoft .NET Framework のプログラミングで有効な正規表現の構文には違いがあります。 たとえば、 [検索と置換] では、タグ付き正規表現に中かっこ {} を使用します。 したがって、正規表現「zo{1}」は、「zo」の後にタグ 1 が続くすべての項目 (「Alonzo1」、「Gonzo1」など) と一致します。 ところが、.NET Framework の場合は、量化子に中かっこ {} を使用します。 したがって、正規表現「zo{1}」は、「z」の後に 1 個の「o」が続くすべての項目と一致します (つまり、「zone」は一致項目ですが、「zoo」は違います)。
参照一覧から使用できる正規表現を以下にまとめます。
式 | 構文 | 説明 |
---|---|---|
任意の 1 文字 | . | 改行以外の任意の 1 文字を検索します。 |
0 個以上 | * | 直前の正規表現のゼロ個以上の項目を検索します (考えられるすべての一致項目を取得します)。 |
1 個以上 | + | 直前の正規表現の 1 個以上の項目を検索します。 |
行頭 | ^ | 一致文字列を行の先頭に合わせます。 |
行末 | $ | 一致文字列を行の末尾に合わせます。 |
語頭 | < | 単語がテキスト内のこの位置で始まっている場合にのみ一致項目になります。 |
語末 | > | 単語がテキスト内のこの位置で終わっている場合にのみ一致項目になります。 |
改行 | \n | プラットフォームに依存しない改行を検索します。 置換の正規表現の場合は、改行を挿入します。 |
セット内の任意の 1 文字 | [] | [] 内の任意の 1 文字を検索します。 文字の範囲を指定するには、開始文字と終了文字をダッシュ (-) で区切り、たとえば [a-z] のように指定します。 |
セット外の任意の 1 文字 | [^...] | ^ の後の文字セット内に存在しない任意の 1 文字を検索します。 |
または | | | OR 記号 (|) の前の表現と後の表現を検索します。 基本的にグループ内で使用します。 たとえば、「(sponge|mud) bath」の一致項目は、「sponge bath」と「mud bath」です。 |
エスケープ特殊文字 | | バックスラッシュ (\) の後の文字をリテラルと見なして一致項目を検索します。 これにより、正規表現の中で使用する文字 (「{」、「^」など) を検索できます。 たとえば、「\^」と指定すると、「^」文字を検索できます。 | |
タグ付き正規表現 | {} | かっこで囲んだ正規表現をタグとして追加したテキストが一致項目になります。 |
C/C++ 識別子 | :i | 正規表現 ([a-zA-Z_$][a-zA-Z0-9_$]*) を検索します。 |
引用符で囲んだ文字列 | :q | 正規表現 (("[^"]*")|('[^']*')) を検索します。 |
スペースまたはタブ | :b | スペース文字またはタブ文字を検索します。 |
Integer | :z | 正規表現 ([0-9]+) を検索します。 |
[検索と置換] の操作で有効なすべての正規表現の一覧が 参照一覧に表示されるわけではありません。 [検索する文字列] の文字列に以下の正規表現を挿入することも可能です。
式 | 構文 | 説明 |
---|---|---|
最短 - ゼロ個以上 | @ | 直前の正規表現のゼロ個以上の項目を検索します (一致項目の文字の数を最小限にします)。 |
最短 - 1 個以上 | # | 直前の正規表現の 1 個以上の項目を検索します (一致項目の文字の数を最小限にします)。 |
n 回の繰り返し | ^n | 直前の正規表現の n 回の繰り返しを検索します。 たとえば、「[0-9]^4」は、任意の 4 桁の数字と一致します。 |
グループ化 | () | サブ式をグループ化します。 |
n 番目のタグ付きテキスト | \n | [検索または置換] の正規表現では、n 番目のタグ付き正規表現と一致するテキストを示します。n は 1 ~ 9 の数字です。 [置換] の正規表現の場合、「\0」を指定すると、一致したテキスト全体が挿入されます。 |
右揃えのフィールド | \(w,n) | [置換] の正規表現では、少なくとも w 文字分の幅があるフィールドで n 番目のタグ付きテキストが右揃えになります。 |
左揃えのフィールド | \(-w,n) | [置換] の正規表現では、少なくとも w 文字分の幅があるフィールドで n 番目のタグ付きテキストが左揃えになります。 |
対象外 | ~(X) | 正規表現のこの位置に X が存在する場合に、その項目を検索から除外します。 たとえば、「real~(ity)」と指定した場合、「realty」と「really」の「real」は一致項目になりますが、「reality」の「real」は除外されます。 |
英数文字 | :a | 正規表現 ([a-zA-Z0-9]) を検索します。 |
英文字 | :c | 正規表現 ([a-zA-Z]) を検索します。 |
10 進数 | :d | 正規表現 ([0-9]) を検索します。 |
16 進数 | :h | 正規表現 ([0-9a-fA-F]+) を検索します。 |
有理数 | :n | 正規表現 (([0-9]+.[0-9]*)|([0-9]*.[0-9]+)|([0-9]+)) を検索します。 |
英文字列 | :w | 正規表現 ([a-zA-Z]+) を検索します。 |
エスケープ | \e | Unicode U+001B。 |
ビープ音 | \g | Unicode U+0007。 |
バックスペース | \h | Unicode U+0008。 |
タブ | \t | タブ文字 (Unicode U+0009) を検索します。 |
Unicode 文字 | \x#### または \u#### | Unicode 値で指定された 1 文字を検索します (#### は 16 進数です)。 基本多言語面以外の文字 (サロゲート) を ISO 10646 のコード ポイントで指定することも、サロゲート ペアの値を 2 つの Unicode コード ポイントで指定することも可能です。 |
標準の Unicode 文字プロパティによる一致検索のための構文を以下にまとめます。 2 文字の省略形は、Unicode 文字プロパティ データベースに挙げられている省略形と同じです。 その省略形を文字セットの一部として指定することも可能です。 たとえば、正規表現 [:Nd:Nl:No] は任意の数字と一致します。
式 | 構文 | 説明 |
---|---|---|
大文字 | :Lu | 任意の 1 つの大文字を検索します。 たとえば、「:Luhe」と指定した場合、「The」は一致項目ですが、「the」は違います。 |
小文字 | :Ll | 任意の 1 つの小文字を検索します。 たとえば、「:Llhe」と指定した場合、「the」は一致項目ですが、「The」は違います。 |
大文字と小文字の組み合わせ | :Lt | 大文字と小文字と組み合わせた文字列 (Nj、Dz など) を検索します。 |
修飾文字 | :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 | 行末を検索します。 |
書式設定制御文字 | :Cf | 双方向制御文字などの書式指定制御文字。 |
サロゲート | :Cs | サロゲート ペアの片方を検索します。 |
個人用領域の任意の文字 | :Co | 個人用領域の任意の 1 文字を検索します。 |
割り当てられていない文字 | :Cn | Unicode 文字に割り当てられていない文字を検索します。 |
標準の Unicode 文字プロパティの他に、以下の追加プロパティを文字セットの一部として指定できます。
式 | 構文 | 説明 |
---|---|---|
Alpha | :Al | 任意の 1 文字を検索します。 たとえば、「:Alhe」は、「The」、「then」、「reached」などの単語を検索します。 |
数値 | :Nu | 任意の 1 つの数字を検索します。 |
句読点 | :Pu | 任意の 1 つの区切り記号 (?、@、' など) を検索します。 |
空白 | :Wh | すべての種類の空白を検索します。印刷用や表意文字の空白も含みます。 |
Bidi | :Bi | アラビア語やヘブライ語など、右から左に記述する文字を検索します。 |
ハングル | :Ha | 韓国語のハングルおよびジャモの組み合わせを検索します。 |
ひらがな | :Hi | ひらがなを検索します。 |
カタカナ | :Ka | カタカナを検索します。 |
表意文字 | :Id | ハングル文字や漢字などの表意文字を検索します。 |