2008-08-26 5 views

답변

6

Match은 대상 텍스트와 일치하는 특정 정규 표현식을 나타내는 개체입니다. Group은 원래 정규 표현식에 그룹 마커 (기본적으로 괄호 안의 패턴)가 포함되어있는 경우 일치 항목의 일부를 나타냅니다. 예를 들어, 다음 코드 :

string text = "One car red car blue car"; 
string pat = @"(\w+)\s+(car)"; 
Match m = r.Match(text); 

m 두 그룹이 포함되어 일치하는 객체가 될 것입니다 - 잘 일치 (\w+)에서 그룹 1을, 그 포착 "하나", 그리고 ((car)에서) 2 군, "차".

2

일치는 정규식과 일치하는 문자열의 일부이므로 문자열 내에 여러 일치가있을 수 있습니다.

일치하는 부분을 익명 또는 명명 된 그룹으로 정의하면 일치를 쉽게 분할 할 수 있습니다. 간단한 예제는 URL을 검색하기위한 정규 표현식을 작성한 다음 내부의 그룹을 사용하여 프로토콜 (http), 도메인 (www.web.com), 경로 (/lol/cats.html) 및 인수 및 그 밖의 것을 찾을 수 있습니다. 내가 말한대로 Regex.Matches (문자열 텍스트)를 사용하는 경우 여러 경기를 다시 얻을 수 있도록

// Example I made up on the spot, probably doesn't work very well 
"(?<protocol>\w+)://(?<domain>[^/]+)(?<path>/[^?])" 

하나의 패턴은 각각 0 개, 1 개 이상의 그룹으로 구성, 문자열 내부에 여러 번 찾을 수 있습니다 .

이러한 명명 된 그룹은 숫자로 색인화하거나 문자열로 찾을 수 있습니다. 이상과 같이 사용할 수있는 예 :

Match match = pattern.Match(urls); 
if (!match.Success) 
    continue; 
string protocol = match.Groups["protocol"].Value; 
string domain = match.Groups[1].Value; 

이 일을 더 재미있게 만들어하려면, 한 그룹은 여러 번 일치 할 수 있지만, 그때는 documentation을 읽기 시작하는 것이 좋습니다.

그룹을 사용하여 역 참조를 생성하고 부분 검색 및 바꾸기를 수행 할 수도 있지만 MSDN에서 그 이상의 내용을 읽을 수 있습니다.

관련 문제