Visual Studio での正規表現の使用Using Regular Expressions in Visual Studio

Visual StudioVisual Studio は、テキストの検索と置換をするときに、.NET Framework の正規表現を使用します。 uses .NET Framework regular expressions to find and replace text. .NET の正規表現の詳細については、「.NET Framework の正規表現」を参照してください。For more information about .NET regular expressions, see .NET Framework Regular Expressions.

Visual Studio 2012 より前、Visual Studio は [検索と置換] ウィンドウでカスタムの正規表現構文を使用していました。Before Visual Studio 2012, Visual Studio used custom regular expression syntax in the Find and Replace windows. より一般的に使用されているカスタム正規表現のシンボルの一部を .NET のバージョンに変換する方法については、「Visual Studio での正規表現の使用」を参照してください。See Visual Studio Regular Expression Conversions for an explanation of how to convert some of the more commonly-used custom regular expression symbols to the .NET versions.

ヒント

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

ヒント

置換パターンでよく使用される正規表現の詳細については、「置換」を参照してください。For information about regular expressions that are used in replacement patterns, see Substitutions. 番号付きのキャプチャ グループを使用する場合の構文は、番号付きグループを指定する $1 と、該当のグループを指定する (x) です。To use a numbered capture group, the syntax is $1 to specify the numbered group and (x) to specify the group in question. たとえば、グループ化正規表現 (\d)([a-z]) を使用すると、"1a 3c 2b 4d" という文字列の中で、4 つの一致が見つかります。For example, the grouped regular expression (\d)([a-z]) finds four matches in the following string: 1a 2b 3c 4d. 置換文字列 z$1 を使用すると、この文字列は "z1 z2 z3 z4" に変換されます。The replacement string z$1 converts that string to z1 z2 z3 z4.

Visual Studio での正規表現Regular Expressions in Visual Studio

次にいくつかの例を示します。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 (ie 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".

関連項目See Also

テキストの検索と置換Finding and Replacing Text