>  기사  >  백엔드 개발  >  정규식 그룹은 C#에서 어떻게 작동하나요?

정규식 그룹은 C#에서 어떻게 작동하나요?

Patricia Arquette
Patricia Arquette원래의
2024-10-29 12:28:02297검색

How do Regular Expression Groups Work in C#?

C#의 정규 표현식 그룹

다음 코드 블록에서 제공된 정규식은 대괄호 안의 내용을 추출합니다.

var pattern = @"\[(.*?)\]";
var matches = Regex.Matches(user, pattern);

입력 사용자 == "Josh Smith [jsmith]":

matches.Count == 1
matches[0].Value == "[jsmith]"

그러나 다음과 같이 [0].Groups.Count == 2와 일치합니다:

matches[0].Groups[0].Value == "[jsmith]"
matches[0].Groups[1].Value == "jsmith"

그룹 컬렉션 이해

  • match.Groups[0]에는 항상 match.Value와 동일한 전체 일치 항목이 포함됩니다.
  • match.Groups[1 ]는 정규식의 첫 번째 그룹을 캡처합니다.

이 경우:

  • 패턴은 @"[(.*?)]"로 정의됩니다. 여기서 (. *?)는 캡처 그룹입니다.
  • 정규 표현식은 괄호 안의 내용뿐만 아니라 괄호로 묶인 문자열 전체와 일치합니다.

따라서 match.Groups[1]. 값은 괄호 안의 내용인 "jsmith"를 검색합니다.

일치 내 그룹 수

다음 규칙은 일치 내 그룹 수를 제어합니다.

  • 모든 일치 항목에는 항상 전체 일치 항목인 인덱스 0에 단일 그룹이 있습니다.
  • 추가 그룹 수는 정규식에 정의된 캡처 그룹에 따라 다릅니다.
  • 캡처링 그룹이 정의되지 않은 경우 일치 항목에는 하나의 그룹만 포함됩니다.

제공된 예에서 패턴에는 하나의 캡처링 그룹이 포함되므로 match.Groups.Count는 항상 2입니다. 그러나 여러 캡처 그룹이 포함된 정규 표현식이 더 복잡할수록 그룹 수가 더 많아집니다.

추가 예

다음 패턴과 일치를 고려하세요.

var pattern = @"\[(.*?)\](.*)";
var match = Regex.Match("ignored [john] John Johnson", pattern);
  • match.Value는 "[john] John Johnson"입니다.
  • match.Groups[0]는 "[john] John Johnson"입니다.
  • match.Groups[1 ]는 [john]입니다.
  • match.Groups[2]는 John Johnson입니다.

더 복잡한 패턴:

var pattern = @"(\[.*?\])+";
var match = Regex.Match("[john][johnny]", pattern);
  • 일치 .값은 "[john][johnny]"입니다.
  • match.Groups[0]는 "[john][johnny]"입니다.
  • match.Groups[1]은 [john]입니다. [johnny].
  • match.Groups[1].Captures[0]는 [john]입니다.
  • match.Groups[1].Captures[1]은 [johnny]입니다.

C#에서 정규식 그룹의 기능을 활용하려면 이러한 개념을 이해하는 것이 중요합니다.

위 내용은 정규식 그룹은 C#에서 어떻게 작동하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.