정규식의 문자 이스케이프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. 마찬가지로 단일 백슬래시는 이스케이프된 언어 구문의 시작을 표시하지만, 이중 백슬래시(\\)는 정규식 엔진이 백슬래시와 일치해야 함을 나타냅니다.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 벨 문자인 \u0007을 찾습니다.Matches 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 탭 문자인 \u0009를 찾습니다.Matches a tab, \u0009.
\r 캐리지 리턴 문자인 \u000D를 찾습니다.Matches a carriage return, \u000D. \r은 줄 바꿈 문자인 \n과 다릅니다.Note that \r is not equivalent to the newline character, \n.
\v 세로 탭 문자인 \u000B를 찾습니다.Matches a vertical tab, \u000B.
\f 용지 공급 문자인 \u000C를 찾습니다.Matches a form feed, \u000C.
\n 줄 바꿈 문자인 \u000A를 찾습니다.Matches a new line, \u000A.
\e 이스케이프 문자인 \u001B를 찾습니다.Matches an escape, \u001B.
\ nnn\ nnn ASCII 문자를 찾습니다. 여기서 nnn은 8진수 문자 코드를 나타내는 두 자리 또는 세 자리 숫자로 구성됩니다.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. 이 생성자가 한 개의 숫자만 포함하거나(예: \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은 두 자리 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. 참고: 유니코드를 지정하는 데 사용되는 Perl 5 문자 이스케이프는 .NET에서 지원되지 않습니다.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.
(.+) 임의 문자를 한 번 이상 찾습니다.Match any character one or more times. 이 그룹은 첫 번째 캡처링 그룹입니다.This is the first capturing group.
[\t\u007c] 탭 문자(\t) 또는 세로 막대(|)를 찾습니다.Match a tab (\t) or a vertical bar (|).
(.+) 임의 문자를 한 번 이상 찾습니다.Match any character one or more times. 이 그룹은 두 번째 캡처링 그룹입니다.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