正規表現での文字のエスケープCharacter Escapes in Regular Expressions

正規表現の円記号 (\) は、次のいずれかを示します。The backslash (\) in a regular expression indicates one of the following:

  • 後に続く文字が、次のセクションの表に示す特殊文字であること。The character that follows it is a special character, as shown in the table in the following section. たとえば、\b は、正規表現の一致がワード境界から開始する必要があることを示すアンカーであり、\t はタブを表します。\x020 は空白を表します。For example, \b is an anchor that indicates that a regular expression match should begin on a word boundary, \t represents a tab, and \x020 represents a space.

  • エスケープされていない言語構成要素として解釈される文字は、文字どおりに解釈する必要があること。A character that otherwise would be interpreted as an unescaped language construct should be interpreted literally. たとえば、中かっこ ({) は量指定子の定義を開始しますが、円記号とそれに続く中かっこ (\{) は、正規表現エンジンで中かっこに一致させる必要があることを示します。For example, a brace ({) begins the definition of a quantifier, but a backslash followed by a brace (\{) indicates that the regular expression engine should match the brace. 同様に、1 つの円記号はエスケープされた言語構成要素の開始を示しますが、2 つの円記号 (\\) は、正規表現エンジンで円記号に一致させる必要があることを示します。Similarly, a single backslash marks the beginning of an escaped language construct, but two backslashes (\\) indicate that the regular expression engine should match the backslash.

注意

文字エスケープは、正規表現では認識されますが、置換パターンでは認識されません。Character escapes are recognized in regular expression patterns but not in replacement patterns.

.NET での文字のエスケープCharacter Escapes in .NET

次の表は、.NET の正規表現でサポートされている文字エスケープの一覧です。The following table lists the character escapes supported by regular expressions in .NET.

文字または文字シーケンスCharacter or sequence 説明Description
次の文字を除くすべての文字:All characters except for the following:

.. $ ^ { [ ( | ) * + ?$ ^ { [ ( | ) * + ? \
文字またはシーケンスの列にリストされているもの以外の文字は、正規表現で特別な意味を持ちません。それらは、その文字自体と一致します。Characters other than those listed in the Character or sequence column have no special meaning in regular expressions; they match themselves.

文字またはシーケンスの列に含まれる文字は、特殊な正規表現言語要素です。The characters included in the Character or sequence column are special regular expression language elements. 正規表現でそれらの文字と一致するためには、エスケープするか、正の文字グループに含める必要があります。To match them in a regular expression, they must be escaped or included in a positive character group. たとえば、正規表現の \$\d+ または [$]\d+は「$1200」と一致します。For example, the regular expression \$\d+ or [$]\d+ matches "$1200".
\a ビープ音 (アラーム) 文字の \u0007Matches a bell (alarm) character, \u0007.
\b [character_group] 文字クラスでバックスペースの \u0008 と一致しますIn a [character_group] character class, matches a backspace, \u0008. (「文字クラス」を参照してください)。文字クラスの外部では、\b はワード境界と一致するアンカーです(See Character Classes.) Outside a character class, \b is an anchor that matches a word boundary. (「アンカー」を参照してください)。(See Anchors.)
\t タブの \u0009Matches a tab, \u0009.
\r キャリッジ リターンの \u000DMatches a carriage return, \u000D. \r の機能は \n という改行文字と同じではありません。Note that \r is not equivalent to the newline character, \n.
\v 垂直タブの \u000BMatches a vertical tab, \u000B.
\f フォーム フィードの \u000CMatches a form feed, \u000C.
\n 改行文字の \u000AMatches a new line, \u000A.
\e エスケープ文字の \u001BMatches an escape, \u001B.
\ nnn ASCII 文字と一致します。nnn は、8 進文字コードを表す 2 桁または 3 桁で構成されます。\ nnn Matches an ASCII character, where nnn consists of two or three digits that represent the octal character code. たとえば、\040 は、空白文字を表します。For example, \040 represents a space character. この構成体は、1 桁のみの場合 (\2 など)、またはキャプチャ グループの番号に対応する場合には前方参照として解釈されます。This construct is interpreted as a backreference if it has only one digit (for example, \2) or if it corresponds to the number of a capturing group. (「前方参照構成体」を参照してください。)(See Backreference Constructs.)
\x nn\x nn ASCII 文字と一致します。nn は 2 桁の 16 進文字コードです。Matches an ASCII character, where nn is a two-digit hexadecimal character code.
\c X\c X ASCII の制御文字と一致します。X は制御文字です。Matches an ASCII control character, where X is the letter of the control character. たとえば、\cC は CTRL-C です。For example, \cC is CTRL-C.
\u nnnn\u nnnn 値が nnnn の 16 進数である UTF-16 コード単位と一致します。Matches a UTF-16 code unit whose value is nnnn hexadecimal. 注: .NET では、Unicode を指定するために使用する Perl5 の文字エスケープはサポートされません。Note: The Perl 5 character escape that is used to specify Unicode is not supported by .NET. Perl 5 の文字エスケープは \x{ #### …} の形式です。ここで、 #### は一連の 16 進数です。The Perl 5 character escape has the form \x{####…}, where #### is a series of hexadecimal digits. 代わりに、\unnnn を使用します。Instead, use \unnnn.
\ エスケープ文字として認識されない文字が後ろに付いている場合は、その文字と一致します。\ When followed by a character that is not recognized as an escaped character, matches that character. たとえば、\* はアスタリスク (*) と一致し、\x2A と同じです。For example, \* matches an asterisk (*) and is the same as \x2A.

An Example

正規表現の文字エスケープの使用例を次に示します。The following example illustrates the use of character escapes in a regular expression. 2009 年の世界最大規模の都市の名前と人口を含む文字列を解析します。It parses a string that contains the names of the world's largest cities and their populations in 2009. 各都市名は、タブ (\t) または縦棒 (| または \u007c) で区切られます。Each city name is separated from its population by a tab (\t) or a vertical bar (| or \u007c). 個々の都市とその人口は、復帰とライン フィードで互いに区切られています。Individual cities and their populations are separated from each other by a carriage return and line feed.

using System;
using System.Text.RegularExpressions;

public class Example
{
   public static void Main()
   {
      string delimited = @"\G(.+)[\t\u007c](.+)\r?\n";
      string input = "Mumbai, India|13,922,125\t\n" + 
                            "Shanghai, China\t13,831,900\n" + 
                            "Karachi, Pakistan|12,991,000\n" + 
                            "Delhi, India\t12,259,230\n" + 
                            "Istanbul, Turkey|11,372,613\n";
      Console.WriteLine("Population of the World's Largest Cities, 2009");
      Console.WriteLine();
      Console.WriteLine("{0,-20} {1,10}", "City", "Population");
      Console.WriteLine();
      foreach (Match match in Regex.Matches(input, delimited))
         Console.WriteLine("{0,-20} {1,10}", match.Groups[1].Value, 
                                            match.Groups[2].Value);
   }
}
// The example displays the following output:
//       Population of the World's Largest Cities, 2009
//       
//       City                 Population
//       
//       Mumbai, India        13,922,125
//       Shanghai, China      13,831,900
//       Karachi, Pakistan    12,991,000
//       Delhi, India         12,259,230
//       Istanbul, Turkey     11,372,613
Imports System.Text.RegularExpressions

Module Example
   Public Sub Main()
      Dim delimited As String = "\G(.+)[\t\u007c](.+)\r?\n"
      Dim input As String = "Mumbai, India|13,922,125" + vbCrLf + _
                            "Shanghai, China" + vbTab + "13,831,900" + vbCrLf + _
                            "Karachi, Pakistan|12,991,000" + vbCrLf + _
                            "Delhi, India" + vbTab + "12,259,230" + vbCrLf + _
                            "Istanbul, Turkey|11,372,613" + vbCrLf
      Console.WriteLine("Population of the World's Largest Cities, 2009")
      Console.WriteLine()
      Console.WriteLine("{0,-20} {1,10}", "City", "Population")
      Console.WriteLine()
      For Each match As Match In Regex.Matches(input, delimited)
         Console.WriteLine("{0,-20} {1,10}", match.Groups(1).Value, _
                                            match.Groups(2).Value)
      Next                         
   End Sub
End Module
' The example displays the following output:
'       Population of the World's Largest Cities, 2009
'       
'       City                 Population
'       
'       Mumbai, India        13,922,125
'       Shanghai, China      13,831,900
'       Karachi, Pakistan    12,991,000
'       Delhi, India         12,259,230
'       Istanbul, Turkey     11,372,613

この正規表現 \G(.+)[\t|\u007c](.+)\r?\n の解釈を次の表に示します。The regular expression \G(.+)[\t|\u007c](.+)\r?\n is interpreted as shown in the following table.

パターンPattern 説明Description
\G 最後の一致の終了位置から照合を開始します。Begin the match where the last match ended.
(.+) 任意の文字と 1 回以上、一致します。Match any character one or more times. これが最初のキャプチャ グループです。This is the first capturing group.
[\t\u007c] タブ (\t) または縦棒 (|) と一致します。Match a tab (\t) or a vertical bar (|).
(.+) 任意の文字と 1 回以上、一致します。Match any character one or more times. これが 2 番目のキャプチャ グループです。This is the second capturing group.
\r?\n 復帰とそれに続く改行に、0 回または 1 回一致します。Match zero or one occurrence of a carriage return followed by a new line.

関連項目See also