2010-03-04 4 views
3

Console.WriteLine(m.Groups[1]);의 결과가 Contoso, Inc이되는 이유를 확장 할 수 있습니까? 그리고이 예제와 일치하는 단계를 자세히 설명해 주시겠습니까? 감사.이 정규 표현식은 회사 이름을 어떻게 추출합니까?

PS : 나는 그룹

string input = "Company Name: Contoso, Inc."; 
Match m = Regex.Match(input, @"Company Name: (.*$)"); 
Console.WriteLine(m.Groups[1]); 

답변

2

나는 그룹이 일치하는 동안 저장되는 정규 표현식의 일부 그룹

의 개념에 익숙하지 않다. 정규 표현식에서 그룹을 선언하려면, 괄호 사이에 표현식의 일부를 넣으십시오. 그 부분은 그룹 안에 저장됩니다.

그룹은 왼쪽에서 오른쪽으로, 외부에서 내부로 번호가 매겨집니다 (명시 적 이름을 사용할 수도 있음). "제로"그룹은 전체 경기입니다.

귀하의 경우, 문자열의 마지막 부분 인 첫 번째 그룹, 즉 행의 끝까지 "Company Name:"뒤의 모든 문자를 인쇄합니다.

+0

이 예의 일치하는 단계에 대해 자세히 설명해 주실 수 있습니까? 감사. – Ricky

+1

"회사 이름 :"이 표시되면 ". * $"가 모두 일치하기 때문에 다른 모든 기호를 그룹 번호 1에 캡처합니다. – wRAR

1

워드 프로세서는 그룹에 대한 모든 정보가 포함의 개념에 익숙하지 해요,하지만 난 당신이 패턴에서 괄호를 사용할 때마다, 당신은 일치하는 그룹을 만들 수 있다고 생각 . Groups [0]은 패턴과 일치하는 텍스트이고 Groups [i] (i> 0)는 괄호 안의 n 번째 일치 패턴을 나타냅니다. 그룹 이름을 지정할 수도 있습니다.

1

그룹은 괄호 집합으로 표시됩니다. 기본적으로 귀하의 정규식은 다음과 같이 말합니다. 일치 시키려면 들어오는 문자열은 Company Name:으로 시작해야하며 나머지 문자열은 $ 문자열의 끝을 포함하여 .* 인 모든 문자가 될 수 있습니다. .*$은 괄호 안에 있기 때문에 일치하는 항목을 그룹화한다고 말했습니다. 더 많은 그룹을 가질 수 있음을 기억하십시오. 전체 입력 문자열은 항상 Groups[0] (일치하는 경우)이므로 (.*$)이라는 표현이 Groups[1] 인 이유입니다.

1

는 지금 당장 정규 표현식을 공부하고, 그래서 이것은 나를 위해 좋은 연습 :

당신이 사용하는 정규 표현식 이다 "회사 명 : (. * $)" 당신은 RegExOptions를 사용 .SingleLine은 문자열과 일치합니다 (기본 옵션).

"회사 이름 :""^ 회사 명 :"사용했을 경우 (문자열의 어디에서 시작 일치하게 될 당신은 "회사 이름"고 말했다 것이 될한다 . 문자열의 첫 번째 부분 (문자열^= beginnig)을

(.*$) 이것은 명명 그룹으로 변환하면 ".*$" 대해 매칭되는이 그룹 내부

:. 0 이상 취해진 문자 ".", 번번, 문자열 끝까지 "$"

지우기?:)

+2

'(?. * $)'은 (는) 잘못된 표현식입니다. –

+0

맞습니다 - (*. * $)에 관한 언급을 삭제했습니다. – Ando