Match 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
정규식으로 찾은 단일 일치 항목의 결과를 나타냅니다.
public ref class Match : System::Text::RegularExpressions::Group
public class Match : System.Text.RegularExpressions.Group
[System.Serializable]
public class Match : System.Text.RegularExpressions.Group
type Match = class
inherit Group
[<System.Serializable>]
type Match = class
inherit Group
Public Class Match
Inherits Group
- 상속
- 특성
예제
다음 예제에서는 정규식을 Console\.Write(Line)?
사용합니다. 정규식은 다음과 같이 해석됩니다.
콘솔\. 쓰기 | "Console.Write"라는 문자열을 찾습니다. "." 문자는 모든 문자와 일치하는 와일드카드가 아닌 리터럴 마침표로 해석되도록 이스케이프됩니다. |
(선)? | "Line"이라는 0개 또는 1개의 문자열을 찾습니다. |
예제 1
다음 예제에서는 메서드를 Regex.Matches(String, String) 호출하여 입력 문자열의 모든 패턴 일치 항목을 검색합니다. 그런 다음 반환 MatchCollection 된 개체의 Match 개체를 반복하여 각 일치 항목에 대한 정보를 표시합니다.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "int[] values = { 1, 2, 3 };\n" +
"for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
"{\n" +
" Console.Write(values[ctr]);\n" +
" if (ctr < values.GetUpperBound(1))\n" +
" Console.Write(\", \");\n" +
"}\n" +
"Console.WriteLine();\n";
string pattern = @"Console\.Write(Line)?";
MatchCollection matches = Regex.Matches(input, pattern);
foreach (Match match in matches)
Console.WriteLine("'{0}' found in the source code at position {1}.",
match.Value, match.Index);
}
}
// The example displays the following output:
// 'Console.Write' found in the source code at position 112.
// 'Console.Write' found in the source code at position 184.
// 'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
"For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
" Console.Write(values(ctr))" & vbCrLf & _
" If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
"Next" & vbCrLf & _
"Console.WriteLine()"
Dim pattern As String = "Console\.Write(Line)?"
Dim matches As MatchCollection = Regex.Matches(input, pattern)
For Each match As Match In matches
Console.WriteLine("'{0}' found in the source code at position {1}.", _
match.Value, match.Index)
Next
End Sub
End Module
' The example displays the following output:
' 'Console.Write' found in the source code at position 115.
' 'Console.Write' found in the source code at position 184.
' 'Console.WriteLine' found in the source code at position 211.
예제 2
다음 예제에서는 한 번에 하나의 일치 항목을 검색하는 메서드 및 NextMatch 메서드를 호출 Match(String, String) 합니다.
using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string input = "int[] values = { 1, 2, 3 };\n" +
"for (int ctr = values.GetLowerBound(1); ctr <= values.GetUpperBound(1); ctr++)\n" +
"{\n" +
" Console.Write(values[ctr]);\n" +
" if (ctr < values.GetUpperBound(1))\n" +
" Console.Write(\", \");\n" +
"}\n" +
"Console.WriteLine();\n";
string pattern = @"Console\.Write(Line)?";
Match match = Regex.Match(input, pattern);
while (match.Success)
{
Console.WriteLine("'{0}' found in the source code at position {1}.",
match.Value, match.Index);
match = match.NextMatch();
}
}
}
// The example displays the following output:
// 'Console.Write' found in the source code at position 112.
// 'Console.Write' found in the source code at position 184.
// 'Console.WriteLine' found in the source code at position 207.
Imports System.Text.RegularExpressions
Module Example
Public Sub Main()
Dim input As String = "Dim values() As Integer = { 1, 2, 3 }" & vbCrLf & _
"For ctr As Integer = values.GetLowerBound(1) To values.GetUpperBound(1)" & vbCrLf & _
" Console.Write(values(ctr))" & vbCrLf & _
" If ctr < values.GetUpperBound(1) Then Console.Write("", "")" & vbCrLf & _
"Next" & vbCrLf & _
"Console.WriteLine()"
Dim pattern As String = "Console\.Write(Line)?"
Dim match As Match = Regex.Match(input, pattern)
Do While match.Success
Console.WriteLine("'{0}' found in the source code at position {1}.", _
match.Value, match.Index)
match = match.NextMatch()
Loop
End Sub
End Module
' The example displays the following output:
' 'Console.Write' found in the source code at position 115.
' 'Console.Write' found in the source code at position 184.
' 'Console.WriteLine' found in the source code at position 211.
설명
Match 개체는 변경할 수 없으며 공용 생성자가 없습니다. 클래스의 Match 인스턴스는 메서드에서 Regex.Match 반환되며 문자열의 첫 번째 패턴 일치를 나타냅니다. 이후 일치 항목은 메서드에서 Match 반환된 개체로 Match.NextMatch 표시됩니다. 또한 0개 MatchCollection , 1개 이상의 Match 개체로 구성된 개체가 메서드에서 Regex.Matches 반환됩니다.
메서드가 Regex.Matches 입력 문자열의 정규식 패턴과 일치하지 않으면 빈 MatchCollection 개체를 반환합니다. 그런 다음 C#의 foreach
구문 또는 For Each
Visual Basic 구문을 사용하여 컬렉션을 반복할 수 있습니다.
메서드가 Regex.Match 정규식 패턴과 일치하지 않으면 동일한 Match.Empty개체를 Match 반환합니다. 속성을 Success 사용하여 일치가 성공했는지 여부를 확인할 수 있습니다. 다음 예제에서 이에 대해 설명합니다.
// Search for a pattern that is not found in the input string.
string pattern = "dog";
string input = "The cat saw the other cats playing in the back yard.";
Match match = Regex.Match(input, pattern);
if (match.Success )
// Report position as a one-based integer.
Console.WriteLine("'{0}' was found at position {1} in '{2}'.",
match.Value, match.Index + 1, input);
else
Console.WriteLine("The pattern '{0}' was not found in '{1}'.",
pattern, input);
' Search for a pattern that is not found in the input string.
Dim pattern As String = "dog"
Dim input As String = "The cat saw the other cats playing in the back yard."
Dim match As Match = Regex.Match(input, pattern)
If match.Success Then
' Report position as a one-based integer.
Console.WriteLine("'{0}' was found at position {1} in '{2}'.", _
match.Value, match.Index + 1, input)
Else
Console.WriteLine("The pattern '{0}' was not found in '{1}'.", _
pattern, input)
End If
패턴 일치에 성공 Value 하면 속성에 일치하는 부분 문자열이 포함되고, Index 속성은 입력 문자열에서 일치하는 부분 문자열의 시작 위치(0부터 시작)를 나타내고 Length , 속성은 입력 문자열에서 일치하는 부분 문자열의 길이를 나타냅니다.
단일 일치 항목에는 여러 캡처링 그룹이 Match Groups 포함될 수 있으므로 해당 항목을 반환 GroupCollection하는 속성이 있습니다. Match 인스턴스 자체는 전체 일치 항목을 나타내는 컬렉션의 첫 번째 개체(Match.Groups[0]``Match.Groups(0)
Visual Basic)에 해당합니다. 다음과 같은 방법으로 일치하는 방식으로 캡처된 그룹에 액세스할 수 있습니다.
(C#) 또는
For Each
(Visual Basic) 구문을 사용하여foreach
개체의 GroupCollection 멤버를 반복할 수 있습니다.이 GroupCollection.Item[Int32] 속성을 사용하여 캡처링 그룹의 수만큼 그룹을 검색할 수 있습니다. 인스턴스 Regex.GetGroupNumbers 메서드를 호출하여 정규식에 있는 번호가 매겨진 그룹을 확인할 수 있습니다.
이 속성을 사용하여 GroupCollection.Item[String] 캡처링 그룹의 이름으로 그룹을 검색할 수 있습니다. 인스턴스 Regex.GetGroupNames() 메서드를 호출하여 정규식에 있는 명명된 그룹을 확인할 수 있습니다.
속성
Captures |
안쪽-왼쪽 우선 순서로 캡처링 그룹을 사용하여 일치시킨 모든 캡처의 컬렉션을 가져옵니다. 정규식을 RightToLeft 옵션으로 수정한 경우에는 안쪽-오른쪽 우선 순서로 가져올 수 있습니다. 컬렉션에는 0이상의 항목이 있을 수 있습니다. (다음에서 상속됨 Group) |
Empty |
빈 그룹을 가져옵니다. 일치 항목을 찾지 못하는 모든 경우에는 이 빈 일치 항목이 반환됩니다. |
Groups |
정규식으로 일치시킨 그룹의 컬렉션을 가져옵니다. |
Index |
원래 문자열에서 캡처된 부분 문자열의 첫째 문자를 찾은 위치입니다. (다음에서 상속됨 Capture) |
Length |
캡처된 부분 문자열의 길이를 가져옵니다. (다음에서 상속됨 Capture) |
Name |
현재 인스턴스로 표시되는 캡처링 그룹의 이름을 반환합니다. (다음에서 상속됨 Group) |
Success |
일치 작업이 성공적이었는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Group) |
Value |
입력 문자열에서 캡처된 부분 문자열을 가져옵니다. (다음에서 상속됨 Capture) |
ValueSpan |
입력 문자열에서 캡처된 범위를 가져옵니다. (다음에서 상속됨 Capture) |
메서드
Equals(Object) |
지정된 개체가 현재 개체와 같은지 확인합니다. (다음에서 상속됨 Object) |
GetHashCode() |
기본 해시 함수로 작동합니다. (다음에서 상속됨 Object) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
NextMatch() |
마지막 일치 항목이 끝나는 위치(마지막으로 일치한 문자 다음 문자)에서 시작하여 다음 일치 항목에 대한 결과와 함께 새로운 Match 개체를 반환합니다. |
Result(String) |
지정된 바꾸기 패턴의 확장을 반환합니다. |
Synchronized(Match) |
여러 스레드 간에 공유하기에 적합하고 제공된 인스턴스와 동등한 Match 인스턴스를 반환합니다. |
ToString() |
Value 속성을 호출하여 입력 문자열로부터 캡처된 하위 문자열을 검색합니다. (다음에서 상속됨 Capture) |