Visual Studio での正規表現の使用Use regular expressions in Visual Studio

Visual Studio は、テキストの検索と置換をするときに、.NET Framework の正規表現を使います。Visual Studio uses .NET Framework regular expressions to find and replace text.

置換パターンReplacement patterns

番号付きキャプチャ グループを使うには、正規表現パターンにおいてグループをかっこで囲みます。To use a numbered capture group, surround the group with parentheses in the regular expression pattern. 置換パターンで特定の番号付きグループを指定するには、$number を使います。number は、1 から始まる整数です。Use $number, where number is an integer starting at 1, to specify a specific, numbered group in a replacement pattern. たとえば、グループ化された正規表現 (\d)([a-z]) では、2 つのグループが定義されています。1 番目のグループには 1 つの 10 進数字が含まれ、2 番目のグループには a から z の 1 つの文字が含まれます。For example, the grouped regular expression (\d)([a-z]) defines two groups: the first group contains a single decimal digit, and the second group contains a single character between a and z. この式では、1a 3c 2b 4d という文字列の中で、4 つの一致が見つかります。The expression finds four matches in the following string: 1a 2b 3c 4d. 置換文字列 z$1 は最初のグループのみを参照し、この文字列を z1 z2 z3 z4 に変換します。The replacement string z$1 references the first group only, and converts the string to z1 z2 z3 z4.

置換パターンでよく使われる正規表現については、「正規表現での置換」(.NET ガイド) を参照してください。For information about regular expressions that are used in replacement patterns, see Substitutions in regular expressions (.NET guide).

正規表現の例Regular expression examples

次にいくつかの例を示します。Here are some examples:

目的Purpose 正規表現Expression Example
(改行を除く) 任意の 1 文字に一致します。Match any single character (except a line break) である必要があります。. a.o は、"around" の "aro" および "about" の "abo" には一致しますが、"across" の "acro" には一致しません。a.o matches "aro" in "around" and "abo" in "about" but not "acro" in "across".
直前の正規表現の 0 回以上の繰り返しに一致します (一致する文字列の長さを最大限にします)。Match zero or more occurrences of the preceding expression (match as many characters as possible) * a*r は、"rack" の中の "r"、"ark" の中の "ar"、"aardvark" の中の "aar" に一致します。a*r matches "r" in "rack", "ar" in "ark", and "aar" in "aardvark"
0 回以上の任意の文字に一致します (ワイルドカード *)Match any character zero or more times (Wildcard *) .*.* c.*e は、"racket" の中の "cke"、"comment" の中の "comme"、"code" の中の "code" に一致します。c.*e matches "cke" in "racket", "comme" in "comment", and "code" in "code"
直前の正規表現の 1 回以上の繰り返しに一致します (一致する文字列の長さを最大限にします)。Match one or more occurrences of the preceding expression (match as many characters as possible) + e.+e は、"feeder" の中の "eede" に一致しますが、"ee" には一致しません。e.+e matches "eede" in "feeder" but not "ee".
1 回以上の任意の文字に一致します (ワイルドカード ?)Match any character one or more times (Wildcard ?) .+.+ e.+e は、"feeder" の中の "eede" に一致しますが、"ee" には一致しません。e.+e matches "eede" in "feeder" but not "ee".
直前の正規表現の 0 回以上の繰り返しに一致します (一致する文字列の長さを最小限にします)。Match zero or more occurrences of the preceding expression (match as few characters as possible) *?*? e.*?e は、"feeder" の中の "ee" に一致しますが、"eede" には一致しません。e.*?e matches "ee" in "feeder" but not "eede".
直前の正規表現の 1 回以上の繰り返しを検索します (一致する文字列の長さを最小限にします)。Match one or more occurrences of the preceding expression (match as few characters as possible) +?+? e.+?e は、"enterprise" 中の "ente" および "erprise" には一致しますが、単語全体 "enterprise" には一致しません。e.+?e matches "ente" and "erprise" in "enterprise", but not the whole word "enterprise".
一致文字列を、行頭または文字列の先頭に固定します。Anchor the match string to the beginning of a line or string ^ ^car は、単語 "car" が行の先頭に登場する場合のみ、その単語に一致します。^car matches the word "car" only when it appears at the beginning of a line.
一致文字列を、行末に固定します。Anchor the match string to the end of a line \r?$\r?$ End\r?$ は、"end" が行末に登場する場合のみ、その単語に一致します。End\r?$ matches "end" only when it appears at the end of a line.
セット内の任意の 1 文字と一致します。Match any single character in a set [abc][abc] b[abc] は、"ba"、"bb"、および "bc" に一致します。b[abc] matches "ba", "bb", and "bc".
範囲内の任意の文字に一致しますMatch any character in a range of characters [a-f][a-f] be[n-t] は、"between" の中の "bet"、"beneath" の中の "ben"、および "beside" の中の "bes" には一致しますが、"below" の中の "bel" には一致しません。be[n-t] matches "bet" in "between", "ben" in "beneath", and "bes" in "beside", but not "below".
かっこで囲まれた表現を 1 つのまとまりとして扱い、その表現に対して暗黙的に番号を付けます。Capture and implicitly number the expression contained within parenthesis ()() ([a-z])X\1 は、"aXa" および "bXb" に一致しますが、"aXb" には一致しません。([a-z])X\1 matches "aXa"and "bXb", but not "aXb". "\1"は、最初の表現グループ "[a-z]" を指します。"\1" refers to the first expression group "[a-z]".
一致を否定します。Invalidate a match (?!abc)(?!abc) real (?!ity) は、"realty" や "really" の中の "real" に一致しますが、"reality" の中の "real" には一致しません。real (?!ity) matches "real" in "realty" and "really" but not in "reality." また、"realityreal" の中の 2 番目の "real" に一致します (一方、最初の "real" には一致しません)。It also finds the second "real" (but not the first "real") in "realityreal".
指定された一連の文字の中に含まれていない任意の文字と一致します。Match any character that is not in a given set of characters [^abc][^abc] be[^n-t] は、"before" の中の "bef"、"behind" の中の "beh"、および "below" の中の "bel" に一致しますが、"beneath" の中の "ben" には一致しません。be[^n-t] matches "bef" in "before", "beh" in "behind", and "bel" in "below", but not "beneath".
記号の前にある表現、または後にある表現のいずれかに一致します。Match either the expression before or the one after the symbol. || (sponge|mud) bath は "sponge bath" および "mud bath" に一致します。(sponge|mud) bath matches "sponge bath" and "mud bath."
円記号の後の文字をエスケープ処理します。Escape the character following the backslash \ \^ は、^ 文字に一致します。\^ matches the character ^.
直前の文字またはグループが登場する回数を指定します。Specify the number of occurrences of the preceding character or group {x}、ここで x は登場する回数です。{x}, where x is the number of occurrences x(ab){2}x は "xababx" に一致し、x(ab){2,3}x は "xababx" および "xabababx" に一致しますが、"xababababx" には一致しません。x(ab){2}x matches "xababx", and x(ab){2,3}x matches "xababx" and "xabababx" but not "xababababx".
Unicode 文字クラスに含まれるテキストに一致します。ここで、"X" は Unicode 番号です。Match text in a Unicode character class, where "X" is the Unicode number. Unicode 文字クラスの詳細については、次を参照してください。For more information about Unicode character classes, see

Unicode 規格 5.2 の文字のプロパティUnicode Standard 5.2 Character Properties.
\p{X}\p{X} \p{Lu} は "Thomas Doe" の中の "T" および "D" に一致します。\p{Lu} matches "T" and "D" in "Thomas Doe".
ワード境界に一致します。Match a word boundary \b (\b が文字クラスの外部にあるときはワード境界を指定し、文字クラスの内部にあるときはバックスペースを指定します)。\b (Outside a character class \b specifies a word boundary, and inside a character class specifies a backspace). \bin は、"inside" の中の "in" と一致しますが、"pinto" には一致しません。\bin matches "in" in "inside" but not "pinto".
改行 (つまり、キャリッジ リターンとそれに続く新しい行) に一致します。Match a line break (that is, a carriage return followed by a new line). \r?\n\r?\n End\r?\nBegin は、"End" が行の最後の文字列で、"Begin" が次の行の先頭の文字列である場合のみ、単語 "End" と "Begin" に一致します。End\r?\nBegin matches "End" and "Begin" only when "End" is the last string in a line and "Begin" is the first string in the next line.
任意の英数字 1 文字に一致します。Match any alphanumeric character \w\w a\wd は、"add" および "a1d" に一致しますが、"a d" には一致しません。a\wd matches "add" and "a1d" but not "a d".
任意の空白文字と一致します。Match any whitespace character. (?([^\r\n])\s)(?([^\r\n])\s) Public\sInterface は、語句 "Public Interface" に一致します。Public\sInterface matches the phrase "Public Interface".
任意の数字 1 文字に一致します。Match any numeric character \d\d \d は、"3456" の中の "3"、"23" の中の "2"、および "1" の中の "1" に一致します。\d matches and "3" in "3456", "2" in 23", and "1" in "1".
Unicode 文字に一致します。Match a Unicode character \uXXXX、ここで XXXX は、Unicode 文字の値を指定します。\uXXXX where XXXX specifies the Unicode character value. \u0065 は、^ 文字に一致します。\u0065 matches the character "e".
識別子に一致しますMatch an identifier \b(\w+|[\w-[0-9\]]\w*)\b\b(\w+|[\w-[0-9\]]\w*)\b "type1" に一致しますが、&type1" や "#define" に一致しません。Matches "type1" but not &type1" or "#define".
引用符の内側にある文字列と一致しますMatch a string inside quotes ((\".+?\")|('.+?'))((\".+?\")|('.+?')) 単一引用符または二重引用符の内部にある任意の文字列に一致します。Matches any string inside single or double quotes.
16 進数に一致しますMatch a hexadecimal number \b0[xX]([0-9a-fA-F])\b\b0[xX]([0-9a-fA-F])\b "0xc67f" 一致しますが、"0xc67fc67f" には一致しません。Matches "0xc67f" but not "0xc67fc67f".
整数と小数に一致しますMatch integers and decimals \b[0-9]\.*[0-9]+\b\b[0-9]\.*[0-9]+\b "1.333" に一致します。Matches "1.333".

ヒント

Windows オペレーティング システムでは、ほとんどの行は、"\r\n" (キャリッジ リターンと、それに続く新しい行) で終わります。In Windows operating systems, most lines end in "\r\n" (a carriage return followed by a new line). これらの文字は表示されませんが、エディターの中に存在し、.NET の正規表現のサービスに渡されます。These characters aren't visible, but are present in the editor and are passed to the .NET regular expression service.

関連項目See also