정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

Regex 클래스

2013-12-13

변경할 수 없는 정규식을 나타냅니다.

System.Object
  System.Text.RegularExpressions.Regex

Namespace:  System.Text.RegularExpressions
어셈블리:  System(System.dll)

public class Regex

Regex 형식에서는 다음과 같은 멤버를 노출합니다.

  이름설명
Protected 메서드Regex()Regex 클래스의 새 인스턴스를 초기화합니다.
Public 메서드Regex(String)지정된 정규식에 대해 Regex 클래스의 새 인스턴스를 초기화하고 컴파일합니다.
Public 메서드Regex(String, RegexOptions)패턴을 수정할 수 있는 옵션을 사용하여 Regex 클래스의 새 인스턴스를 지정된 정규식에 대해 초기화하고 컴파일합니다.
Public 메서드Regex(String, RegexOptions, TimeSpan)패턴을 수정하는 옵션 및 제한 시간이 끝나기 전에 패턴 일치 메서드가 검색을 시도하는 시간을 지정하는 값을 사용하여 지정된 정규식에 대한 Regex 클래스의 새 인스턴스를 초기화합니다.
맨 위

  이름설명
Public 속성정적 멤버CacheSize컴파일된 정규식에 대한 현재 정적 캐시의 최대 엔트리 수를 가져오거나 설정합니다.
Public 속성MatchTimeout현재 인스턴스의 시간 제한 간격을 가져옵니다.
Public 속성OptionsRegex 생성자로 전달된 옵션을 반환합니다.
Public 속성RightToLeft정규식이 오른쪽에서 왼쪽으로 검색하는지 여부를 나타내는 값을 가져옵니다.
맨 위

  이름설명
Public 메서드Equals(Object)지정한 Object가 현재 Object와 같은지 확인합니다. (Object에서 상속됨)
Public 메서드정적 멤버Escape문자(\, *, +, ?, |, {, [, (,), ^, $,., # 및 공백)의 최소 집합을 자체 이스케이프 코드로 대체하여 이스케이프합니다. 이렇게 하면 정규식 엔진에서 이러한 문자를 메타문자가 아닌 문자 그대로 해석합니다.
Protected 메서드Finalize가비지 수집기에서 Object를 회수하기 전에 개체가 리소스를 해제하고 다른 정리 작업을 수행할 수 있게 합니다. (Object에서 상속됨)
Public 메서드GetGroupNames정규식에 대한 캡처링 그룹 이름의 배열을 반환합니다.
Public 메서드GetGroupNumbers배열 내의 그룹 이름에 해당하는 캡처링 그룹 번호의 배열을 반환합니다.
Public 메서드GetHashCode특정 형식에 대한 해시 함수 역할을 합니다. (Object에서 상속됨)
Public 메서드GetType현재 인스턴스의 Type을 가져옵니다. (Object에서 상속됨)
Public 메서드GroupNameFromNumber지정된 그룹 번호에 해당하는 그룹 이름을 가져옵니다.
Public 메서드GroupNumberFromName지정된 그룹 이름에 해당하는 그룹 번호를 반환합니다.
Public 메서드IsMatch(String)Regex 생성자에 지정된 정규식이 입력 문자열에서 일치하는 항목을 찾을 것인지 여부를 나타냅니다.
Public 메서드IsMatch(String, Int32)Regex 생성자에 지정된 정규식이 입력 문자열의 지정된 시작 위치에서부터 일치하는 항목을 찾을 것인지 여부를 나타냅니다.
Public 메서드정적 멤버IsMatch(String, String)정규식이 pattern 매개 변수에 지정된 정규식을 사용하여 입력 문자열에서 일치하는 항목을 찾을 것인지 여부를 나타냅니다.
Public 메서드정적 멤버IsMatch(String, String, RegexOptions)정규식이 pattern 매개 변수에 지정된 정규식 및 options 매개 변수에 제공된 일치 옵션을 사용하여 입력 문자열에서 일치하는 항목을 찾을 것인지 여부를 나타냅니다.
Public 메서드정적 멤버IsMatch(String, String, RegexOptions, TimeSpan)지정된 정규식이 지정된 일치 옵션 및 시간 제한 간격을 사용하여 지정된 입력 문자열에서 일치하는 항목을 찾을 것인지 여부를 나타냅니다.
Public 메서드Match(String)지정된 입력 문자열에서 Regex 생성자에 지정된 맨 처음 발견되는 정규식을 검색합니다.
Public 메서드Match(String, Int32)지정된 입력 문자열 시작 위치를 사용하여 입력 문자열에서 정규식의 처음 발견되는 항목을 검색합니다.
Public 메서드정적 멤버Match(String, String)지정된 입력 문자열에서 pattern 매개 변수에서 제공한 정규식의 처음 발견된 항목을 검색합니다.
Public 메서드Match(String, Int32, Int32)지정된 입력 문자열 시작 위치 및 입력 문자열 길이를 사용하여 입력 문자열에서 정규식의 처음 발견되는 항목을 검색합니다.
Public 메서드정적 멤버Match(String, String, RegexOptions)입력 문자열에서 options 매개 변수에 제공된 일치 옵션을 사용하여 pattern 매개 변수에서 제공한 정규식의 처음 발견된 항목을 검색합니다.
Public 메서드정적 멤버Match(String, String, RegexOptions, TimeSpan)지정된 일치 옵션 및 시간 제한 간격을 사용하여 입력 문자열에서 첫 번째 지정된 정규식을 검색합니다.
Public 메서드Matches(String)지정된 입력 문자열에서 정규식을 모두 검색합니다.
Public 메서드Matches(String, Int32)문자열의 지정된 시작 위치에서 시작하여 지정된 입력 문자열에서 정규식을 모두 검색합니다.
Public 메서드정적 멤버Matches(String, String)지정된 입력 문자열 내에서 pattern 매개 변수에 의해 지정된 정규식을 모두 검색합니다.
Public 메서드정적 멤버Matches(String, String, RegexOptions)지정된 입력 문자열 내에서 pattern 매개 변수에 의해 지정된 정규식을 options 매개 변수에 제공된 일치 옵션을 사용하여 모두 검색합니다.
Public 메서드정적 멤버Matches(String, String, RegexOptions, TimeSpan)지정된 일치 옵션 및 시간 제한 간격을 사용하여 지정된 입력 문자열에서 지정된 정규식을 모두 검색합니다.
Protected 메서드MemberwiseClone현재 Object의 단순 복사본을 만듭니다. (Object에서 상속됨)
Public 메서드Replace(String, String)지정된 입력 문자열 내에서 정규식 패턴과 일치하는 모든 문자열을 지정된 대체 문자열로 바꿉니다.
Public 메서드Replace(String, MatchEvaluator)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 문자열을 MatchEvaluator 대리자가 반환한 문자열로 바꿉니다.
Public 메서드Replace(String, String, Int32)지정된 입력 문자열 내에서 정규식 패턴과 일치하는 지정된 최대 개수의 문자열을 지정된 대체 문자열로 바꿉니다.
Public 메서드정적 멤버Replace(String, String, String)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 문자열을 지정된 대체 문자열로 바꿉니다.
Public 메서드정적 멤버Replace(String, String, MatchEvaluator)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 문자열을 MatchEvaluator 대리자가 반환한 문자열로 바꿉니다.
Public 메서드Replace(String, MatchEvaluator, Int32)지정된 입력 문자열 내에서 정규식 패턴과 일치하는 지정된 최대 개수의 문자열을 MatchEvaluator 대리자가 반환한 문자열로 바꿉니다.
Public 메서드Replace(String, String, Int32, Int32)지정된 입력 부분 문자열 내에서 정규식 패턴과 일치하는 지정된 최대 개수의 문자열을 지정된 대체 문자열로 바꿉니다.
Public 메서드정적 멤버Replace(String, String, String, RegexOptions)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 문자열을 지정된 대체 문자열로 바꿉니다. 지정한 옵션에 따라 일치 작업이 수정됩니다.
Public 메서드정적 멤버Replace(String, String, MatchEvaluator, RegexOptions)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 문자열을 MatchEvaluator 대리자가 반환한 문자열로 바꿉니다. 지정한 옵션에 따라 일치 작업이 수정됩니다.
Public 메서드Replace(String, MatchEvaluator, Int32, Int32)지정된 입력 부분 문자열 내에서 정규식 패턴과 일치하는 지정된 최대 개수의 문자열을 MatchEvaluator 대리자가 반환한 문자열로 바꿉니다.
Public 메서드정적 멤버Replace(String, String, String, RegexOptions, TimeSpan)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 문자열을 지정된 대체 문자열로 바꿉니다. 추가 매개 변수는 일치 항목이 없는 경우 일치 작업 및 시간 제한 간격을 수정하는 옵션을 지정합니다.
Public 메서드정적 멤버Replace(String, String, MatchEvaluator, RegexOptions, TimeSpan)지정된 입력 문자열 내에서 지정된 정규식과 일치하는 모든 부분 문자열을 MatchEvaluator 대리자가 반환한 문자열로 바꿉니다. 추가 매개 변수는 일치 항목이 없는 경우 일치 작업 및 시간 제한 간격을 수정하는 옵션을 지정합니다.
Public 메서드Split(String)Regex 생성자에 지정된 정규식 패턴이 정의한 위치에서 지정된 입력 문자열을 분할합니다.
Public 메서드Split(String, Int32)지정된 입력 문자열을 Regex 생성자에 지정된 정규식이 정의한 위치에서 지정된 최대 수만큼 분할합니다.
Public 메서드정적 멤버Split(String, String)입력 문자열을 정규식 패턴에 의해 정의된 위치에서 분할합니다.
Public 메서드Split(String, Int32, Int32)지정된 입력 문자열을 Regex 생성자에 지정된 정규식이 정의한 위치에서 지정된 최대 수만큼 분할합니다. 입력 문자열에서 지정된 문자 위치부터 정규식 패턴을 검색합니다.
Public 메서드정적 멤버Split(String, String, RegexOptions)지정된 입력 문자열을 정규식 패턴에 의해 정의된 위치에서 분할합니다. 지정한 옵션에 따라 일치 작업이 수정됩니다.
Public 메서드정적 멤버Split(String, String, RegexOptions, TimeSpan)입력 문자열을 지정된 정규식 패턴에 의해 정의된 위치에서 부분 문자열로 이루어진 배열로 분할합니다. 추가 매개 변수는 일치 항목이 없는 경우 일치 작업 및 시간 제한 간격을 수정하는 옵션을 지정합니다.
Public 메서드ToStringRegex 생성자로 전달된 정규식 패턴을 반환합니다. (Object.ToString()을(를) 재정의함)
Public 메서드정적 멤버Unescape입력 문자열에서 이스케이프 서식이 추가된 문자를 원래대로 되돌립니다.
Protected 메서드UseOptionR인프라입니다. 정규식 엔진에서 내부적으로 사용됩니다.
맨 위

  이름설명
Protected 필드capsize인프라입니다. 정규식 엔진에서 내부적으로 사용됩니다.
Protected 필드capslist인프라입니다. 정규식 엔진에서 내부적으로 사용됩니다.
Public 필드정적 멤버InfiniteMatchTimeout패턴 일치 작업이 제한 시간이 초과되지 않아야 한다는 것을 지정합니다.
Protected 필드pattern인프라입니다. 정규식 엔진에서 내부적으로 사용됩니다.
Protected 필드roptions인프라입니다. 정규식 엔진에서 내부적으로 사용됩니다.
맨 위

Regex 클래스는 .NET Framework의 정규식 엔진을 나타냅니다. 이 클래스를 사용하면 많은 양의 텍스트를 신속히 구문 분석하여 특정 문자 패턴을 찾을 수 있고, 텍스트의 유효성을 검사하거나 텍스트 부분 문자열을 추출, 편집, 바꾸기 또는 삭제하거나 추출된 문자열을 컬렉션에 추가하여 보고서를 생성할 수도 있습니다.

정규식을 사용하려면 .NET Framework 설명서의 정규식 언어 요소에 설명된 구문을 사용하여 텍스트 스트림에서 식별할 패턴을 정의합니다. 그런 다음 필요할 경우 Regex 개체를 인스턴스화할 수 있습니다. 마지막으로 정규식 패턴과 일치하는 텍스트를 바꾸거나 패턴 일치 항목을 식별하는 등 특정 작업을 수행합니다.

Regex와 String 메서드 비교

System.String 클래스에는 텍스트 패턴 일치를 수행하는 데 사용할 수 있는 몇 가지 검색 및 비교 메서드가 포함됩니다. 예를 들어, String.Contains, String.EndsWithString.StartsWith 메서드는 문자열 인스턴스가 지정된 하위 문자열을 포함하는지 여부를 결정하며, String.IndexOf, String.IndexOfAny, String.LastIndexOfString.LastIndexOfAny 메서드는 문자열에서 지정된 하위 문자열의 시작 위치를 반환합니다. 특정 문자열을 검색하려는 경우 System.String 클래스의 메서드를 사용합니다. 문자열에서 특정 패턴을 검색하려는 경우에는 Regex 클래스를 사용합니다. 자세한 내용 및 예제는 [521b3f6d-f869-42e1-93e5-158c54a6895d]을 참조하세요.

정적 메서드와 인스턴스 메서드 비교

정규식 패턴을 정의한 후 해당 패턴을 두 가지 방법 중 하나로 정규식 엔진에 제공할 수 있습니다.

  • 정규식을 나타내는 Regex 개체를 인스턴스화합니다. 이렇게 하려면 정규식 패턴을 Regex 생성자에 전달합니다. Regex 개체는 변경할 수 없습니다. 정규식을 포함하는 Regex 개체를 인스턴스화하는 경우 해당 개체의 정규식을 변경할 수 없습니다.

  • 검색할 텍스트와 정규식을 static(Visual Basic에서는 Shared) Regex 메서드에 모두 제공합니다. 이렇게 하면 Regex 개체를 명시적으로 만들지 않고도 정규식을 사용할 수 있습니다.

모든 Regex 패턴 식별 메서드는 정적 오버로드와 인스턴스 오버로드를 모두 포함합니다.

정규식 엔진에서 특정 패턴을 사용하려면 먼저 해당 패턴을 컴파일해야 합니다. Regex 개체는 변경할 수 없으므로 이러한 컴파일은 Regex 클래스 생성자가 호출되거나 정적 메서드가 호출될 때 발생하는 일회성 프로시저입니다. 단일 정규식을 반복적으로 컴파일할 필요가 없도록 하기 위해 정규식 엔진이 정적 메서드 호출에 사용된 컴파일된 정규식을 캐시합니다. 따라서 정규식 패턴 일치 메서드는 정적 메서드와 인스턴스 메서드에 대해 비슷한 수준의 성능을 제공합니다.

하지만 정규식 엔진으로 구현한 캐싱 시스템은 다음과 같은 두 경우에 성능이 저하될 수 있습니다.

  • 많은 정규식과 함께 정적 메서드 호출을 사용하는 경우. 기본적으로 정규식 엔진에서는 가장 최근에 사용된 15개의 정적 정규식을 캐시합니다. 응용프로그램에서 15개 이상의 정적 정규식을 사용하는 경우 일부 정규식을 다시 컴파일해야 합니다. 이렇게 다시 컴파일하는 일이 없도록, Regex.CacheSize 속성을 적절한 값으로 높게 설정할 수 있습니다.

  • 응용프로그램에서 이전에 컴파일된 정규식을 포함하는 새 Regex 개체를 인스턴스화하는 경우. 예를 들어 다음 코드는 텍스트 스트림의 각 줄에서 중복된 단어를 찾는 정규식을 정의합니다. 이 예제에서 단일 정규식을 사용하지만 새 Regex 개체를 인스턴스화하여 텍스트의 각 줄을 처리합니다. 따라서 루프 반복마다 정규식을 다시 컴파일합니다.

    
    string[] inputs = { "This this is a typo.", 
                        "They said that that man would come." };
    string pattern = @"\b(\w+)\s\1\b";
    foreach (string input in inputs)
    {
       Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
       MatchCollection matches = rgx.Matches(input);
       if (matches.Count > 0)
       {
          outputBlock.Text += String.Format("{0} ({1} matches):", input, matches.Count) + "\n";
          foreach (Match match in matches)
             outputBlock.Text += "   " + match.Value + "\n";
       }
    }
    
    
    

    이렇게 다시 컴파일되지 않게 하려면 다시 작성된 다음 예제에서처럼 응용프로그램이 자신을 필요로 하는 모든 코드에 액세스할 수 있는 단일 Regex 개체를 인스턴스화해야 합니다.

    
    string[] inputs = { "This this is a typo.", 
                        "They said that that man would come." };
    string pattern = @"\b(\w+)\s\1\b";
    Regex rgx = new Regex(pattern, RegexOptions.IgnoreCase);
    
    foreach (string input in inputs)
    {
       MatchCollection matches = rgx.Matches(input);
       if (matches.Count > 0)
       {
          outputBlock.Text += String.Format("{0} ({1} matches):", input, matches.Count) + "\n";
          foreach (Match match in matches)
             outputBlock.Text += "   " + match.Value + "\n";
       }
    }
    
    
    

정규식 연산 수행

Regex 개체를 인스턴스화하고 해당 개체의 메서드를 호출하거나 정적 메서드를 호출하기로 한 경우 Regex 클래스는 다음 패턴 일치 기능을 제공합니다.

  • 일치의 유효성 검사. IsMatch 메서드를 호출하여 일치 항목이 있는지 여부를 확인합니다.

  • 단일 일치 항목 검색. Match 메서드를 호출하여 문자열이나 부분 문자열에서 첫 번째 일치 항목을 나타내는 Match 개체를 검색합니다. Match.NextMatch 메서드를 호출하여 이후 일치 항목을 검색할 수 있습니다.

  • 모든 일치 항목 검색. Matches 메서드를 호출하여 문자열이나 부분 문자열에서 모든 일치 항목을 나타내는 System.Text.RegularExpressions.MatchCollection 개체를 검색합니다.

  • 일치하는 텍스트 바꾸기. Replace 메서드를 호출하여 일치하는 텍스트를 바꿉니다. 바꾸기 텍스트는 정규식을 사용하여 정의할 수도 있습니다. 또한 일부 Replace 메서드에는 바꾸기 텍스트를 프로그래밍 방식으로 정의할 수 있도록 하는 MatchEvaluator 매개 변수도 포함되어 있습니다.

  • 입력 문자열의 일부로 구성된 문자열 배열 만들기. Split 메서드를 호출하여 정규식에 정의된 위치에서 입력 문자열을 분할합니다.

Regex 클래스에는 패턴 일치 메서드 외에도 특수 용도의 몇 가지 메서드가 있습니다.

  • Escape 메서드는 정규식이나 입력 문자열에서 정규식 연산자로 해석할 수 있는 문자를 이스케이프합니다.

  • Unescape 메서드는 이러한 이스케이프 문자를 제거합니다.

다음 예제에서는 정규식을 사용하여 문자열에서 단어가 반복적으로 나오는지 확인하는 방법을 보여 줍니다. 정규식 \b(?<word>\w+)\s+(\k<word>)\b는 다음 표에 나와 있는 것처럼 해석할 수 있습니다.

패턴

설명

\b

단어 경계에서 찾기를 시작합니다.

(?<word>\w+)

단어 경계까지 하나 이상의 단어 문자를 찾습니다. 캡처된 이 그룹 word에 이름을 지정합니다.

\s+

하나 이상의 공백 문자를 찾습니다.

(\k<word>)

이름이 word인 캡처된 그룹을 찾습니다.

\b

단어 경계를 찾습니다.

참고참고:

이 샘플 코드를 컴파일하고 실행하는 방법을 보려면 Windows Phone용 정적 TextBlock 컨트롤이 있는 예제 빌드를 참조하세요.


using System;
using System.Text.RegularExpressions;

public class Example
{

   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {

      // Define a regular expression for repeated words.
      Regex rx = new Regex(@"\b(?<word>\w+)\s+(\k<word>)\b",
                           RegexOptions.IgnoreCase);

      // Define a test string.        
      string text = "The the quick brown fox  fox jumped over the lazy dog dog.";

      // Find matches.
      MatchCollection matches = rx.Matches(text);

      // Report the number of matches found.
      outputBlock.Text += String.Format("{0} matches found in:\n   {1}",
                        matches.Count,
                        text) + "\n";

      // Report on each match.
      foreach (Match match in matches)
      {
         GroupCollection groups = match.Groups;
         outputBlock.Text += String.Format("'{0}' repeated at positions {1} and {2}",
                           groups["word"].Value,
                           groups[0].Index,
                           groups[1].Index) + "\n";
      }

   }

}
// The example produces the following output:
//       3 matches found in:
//          The the quick brown fox  fox jumped over the lazy dog dog.
//       'The' repeated at positions 0 and 4
//       'fox' repeated at positions 20 and 25
//       'dog' repeated at positions 50 and 54


다음 예제에서는 정규식을 사용하여 문자열에 현재 값을 나타내는 올바른 형식이 있는지 또는 현재 값을 나타내는지 여부를 확인하는 방법을 보여 줍니다. 이 경우 정규식은 사용자의 현재 문화권에 대한 NumberFormatInfo.CurrencyDecimalSeparator, CurrencyDecimalDigits, NumberFormatInfo.CurrencySymbol, NumberFormatInfo.NegativeSignNumberFormatInfo.PositiveSign 속성에서 동적으로 작성됩니다. 시스템의 현재 문화권은 en-US이며 따라서 정규식은 ^\w*[\+-]?\w?\$?\w?(\d*\.?\d{2}?){1}$입니다. 이 정규식은 다음 표에 나와 있는 것처럼 해석할 수 있습니다.

패턴

설명

^

문자열의 시작 부분에서 시작합니다.

\s*

0개 이상의 공백 문자를 찾습니다.

[\+-]?

0번 이상 나오는 양수 부호 또는 음수 부호를 찾습니다.

\s?

0번 이상 나오는 공백 문자를 찾습니다.

\$?

0번 이상 나오는 달러 기호를 찾습니다.

\s?

0번 이상 나오는 공백 문자를 찾습니다.

\d*

0번 이상 나오는 10진수를 찾습니다.

\.?

0번 이상 나오는 소수점 기호를 찾습니다.

\d{2}?

0번 이상 나오는 두 자리 10진수를 찾습니다.

(\d*\.?\d{2}?){1}

소수점 기호로 구분된 정수와 소수로 이루어진 패턴을 한 번 이상 찾습니다.

$

문자열의 끝을 찾습니다.

이 경우 정규식에서는 유효한 통화 문자열에 그룹 기호가 없으며 현재 문화권의 CurrencyDecimalDigits 속성에 정의된 소수가 없다고 가정합니다.

참고참고:

이 샘플 코드를 컴파일하고 실행하는 방법을 보려면 Windows Phone용 정적 TextBlock 컨트롤이 있는 예제 빌드를 참조하세요.


using System;
using System.Globalization;
using System.Text.RegularExpressions;

public class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      // Get the current NumberFormatInfo object to build the regular 
      // expression pattern dynamically.
      NumberFormatInfo nfi = NumberFormatInfo.CurrentInfo;

      // Define the regular expression pattern.
      string pattern;
      pattern = @"^\s*[";
      // Get the positive and negative sign symbols.
      pattern += Regex.Escape(nfi.PositiveSign + nfi.NegativeSign) + @"]?\s?";
      // Get the currency symbol.
      pattern += Regex.Escape(nfi.CurrencySymbol) + @"?\s?";
      // Add integral digits to the pattern.
      pattern += @"(\d*";
      // Add the decimal separator.
      pattern += Regex.Escape(nfi.CurrencyDecimalSeparator) + "?";
      // Add the fractional digits.
      pattern += @"\d{";
      // Determine the number of fractional digits in currency values.
      pattern += nfi.CurrencyDecimalDigits.ToString() + "}?){1}$";

      Regex rgx = new Regex(pattern);

      // Define some test strings.
      string[] tests = { "-42", "19.99", "0.001", "100 USD", 
                         ".34", "0.34", "1,052.21", "$10.62", 
                         "+1.43", "-$0.23" };

      // Check each test string against the regular expression.
      foreach (string test in tests)
      {
         if (rgx.IsMatch(test))
            outputBlock.Text += String.Format("{0} is a currency value.", test) + "\n";
         else
            outputBlock.Text += String.Format("{0} is not a currency value.", test) + "\n";
      }
   }
}
// The example displays the following output:
//       -42 is a currency value.
//       19.99 is a currency value.
//       0.001 is not a currency value.
//       100 USD is not a currency value.
//       .34 is a currency value.
//       0.34 is a currency value.
//       1,052.21 is not a currency value.
//       $10.62 is a currency value.
//       +1.43 is a currency value.
//       -$0.23 is a currency value.


이 예제에서는 정규식이 동적으로 작성되므로 설계 시점에서는 현재 문화권의 통화 기호, 소수점 기호 또는 양수 및 음수 부호가 정규식 엔진에서 정규식 언어 연산자로 잘못 해석될 수 있는지 여부를 알 수 없습니다. 잘못된 해석을 방지하기 위해 이 예제에서는 동적으로 생성된 각 문자열을 Escape 메서드로 전달합니다.

Windows Phone OS

지원되는 버전: 8.0, 7.1, 7.0

Windows Phone

Regex 클래스는 변경할 수 없으며(읽기 전용) 원래 스레드로부터 안전합니다. Regex 개체는 모든 스레드에서 만들 수 있고 스레드 사이에서 공유할 수 있습니다. 일치하는 메서드는 전역 상태에 전혀 영향을 주지 않으면서 모든 스레드에서 호출될 수 있습니다. 그러나 Regex 메서드에서 반환하는 MatchMatchCollection과 같은 결과 개체는 단일 스레드에서만 사용해야 합니다. 이들 개체의 대부분은 논리적으로는 변경할 수 없습니다. 하지만 성능 향상을 위해 일부 결과의 계산이 지연되는 경우가 있으므로, 호출자는 이들 개체에 대한 액세스를 serialize해야 합니다.

표시: