다음을 통해 공유


문자 이스케이프

업데이트: 2010년 5월

정규식에 있는 백슬래시(\)는 다음 중 하나를 나타냅니다.

  • 다음 단원에 나온 표에서 볼 수 있듯이 뒤에 나온 문자는 특수 문자입니다. 예를 들어 \b는 정규식 일치 항목이 단어 경계에서 시작되어야 함을 나타내는 앵커이고, \t는 탭을, \x020은 스페이스를 나타냅니다.

  • 그렇지 않으면 이스케이프되지 않은 언어 구문으로 해석될 문자는 리터럴로 해석되어야 합니다. 예를 들어 괄호({)는 한정자 정의가 시작되는 부분이지만, 괄호가 뒤에 오는 백슬래시(\{)는 정규식 엔진이 괄호와 괄호를 찾아야 함을 나타냅니다. 마찬가지로, 백슬래시는 이스케이프된 언어 생성자의 시작을 표시하지만 이중 백슬래시(\\)는 정규식 엔진이 백슬래시를 찾아야 함을 나타냅니다.

참고참고

문자 이스케이프는 정규식 패턴에서는 인식되지만 바꾸기 패턴에서는 인식되지 않습니다.

.NET Framework의 문자 이스케이프

다음 표에서는 .NET Framework의 정규식에서 지원하는 문자 이스케이프를 보여 줍니다.

문자 또는 시퀀스

설명

다음 제외한 모든 문자:

. $ ^ { [ ( | ) * + ? \

이러한 문자는 정규식에서는 특별한 의미가 없으며 문자 그대로의 의미를 나타냅니다.

\a

벨(경보) 문자인 \u0007을 찾습니다.

\b

[character_group] 문자 클래스에서 백스페이스 문자인 \u0008을 찾습니다. 자세한 내용은 문자 클래스을 참조하십시오. 문자 클래스 외부에서는 \b가 단어 경계를 찾는 앵커입니다. 자세한 내용은 정규식의 앵커을 참조하십시오.

\t

탭 문자인 \u0009를 찾습니다.

\r

캐리지 리턴 문자인 \u000D를 찾습니다. \r은 줄 바꿈 문자인 \n과 다릅니다.

\v

세로 탭 문자인 \u000B를 찾습니다.

\f

용지 공급 문자인 \u000C를 찾습니다.

\n

줄 바꿈 문자인 \u000A를 찾습니다.

\e

이스케이프 문자인 \u001B를 찾습니다.

\nnn

ASCII 문자를 찾습니다(여기서 nnn은 8진수 문자 코드를 나타내는 최대 세 자리 숫자로 구성됨). 예를 들어, \040은 공백 문자를 나타냅니다. 그러나, 이 생성자가 한 개의 숫자만 포함하거나(예: \2) 캡처링 그룹의 수와 일치하는 경우에는 역참조로 해석됩니다. 자세한 내용은 역참조 구문을 참조하십시오.

\xnn

ASCII 문자를 찾습니다. 여기서 nn은 두 자리 16진수 문자 코드입니다.

\cX

ASCII 제어 문자를 찾습니다. 여기서 X는 제어 문자입니다. 예를 들어 \cC는 CTRL-C입니다.

\unnnn

유니코드 문자를 찾습니다. 여기서 nnnn은 네 자리 16진수 코드 포인트입니다.

참고참고
유니코드를 지정하는 데 사용되는 Perl 5 문자 이스케이프는 .NET Framework에서 지원되지 않습니다.Perl 5 문자 이스케이프는 \x{####…} 형식입니다. 여기서 ####…는 일련의 16진수입니다.대신 \unnnn을 사용합니다.

\

이스케이프된 문자로 인식되지 않는 문자를 이 문자 다음에 넣어 문자 자체를 나타냅니다. 예를 들어 \*는 별표(*)와 일치하고 \x2A와 같습니다.

예를 들면 다음과 같습니다.

다음 예제에서는 정규식에 문자 이스케이프를 사용하는 방법을 보여 줍니다. 2009년 세계에서 가장 큰 도시 이름과 인구수가 들어 있는 문자열을 구문 분석합니다. 도시 이름과 도시별 인구수는 탭(\t) 또는 세로줄(|, \u007c)를 사용하여 분리합니다. 각 도시와 도시별 인구수는 캐리지 리턴과 줄 바꿈으로 서로 구분됩니다.

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 + _
                            "Dehli, 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
'       Dehli, India         12,259,230
'       Istanbul, Turkey     11,372,613
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" + 
                            "Dehli, 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 displyas 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
//       Dehli, India         12,259,230
//       Istanbul, Turkey     11,372,613

정규식 \G(.+)[\t|\u007c](.+)\r?\n는 다음 표와 같이 해석됩니다.

패턴

설명

\G

일치 항목 찾기가 마지막으로 끝난 곳에서 찾기를 시작합니다.

(.+)

문자를 1번 이상 찾습니다. 이 그룹은 첫 번째 캡처링 그룹입니다.

[\t\u007c]

탭(\t) 또는 세로줄(|)을 찾습니다.

(.+)

문자를 1번 이상 찾습니다. 이 그룹은 두 번째 캡처링 그룹입니다.

\r? \n

줄 바꿈이 뒤에 오는 캐리지 리턴을 0개 또는 1개 찾습니다.

참고 항목

개념

정규식 언어 요소

변경 기록

날짜

변경 내용

이유

2010년 5월

정규식 패턴을 수정했습니다.

고객 의견