> 백엔드 개발 > C++ > C# 정규식에서 `matches[0].Value`와 `matches[0].Groups[1].Value`의 차이점은 무엇입니까?

C# 정규식에서 `matches[0].Value`와 `matches[0].Groups[1].Value`의 차이점은 무엇입니까?

DDD
풀어 주다: 2024-11-03 04:15:03
원래의
290명이 탐색했습니다.

What's the Difference Between `matches[0].Value` and `matches[0].Groups[1].Value` in C# Regular Expressions?

C의 정규식 그룹 이해

소개:
정규식은 데이터 추출 및 데이터 추출을 포함한 다양한 프로그래밍 애플리케이션에서 중요한 역할을 합니다. 텍스트 조작. 정규식 그룹을 활용하는 방법을 이해하는 것은 C#에서 정규식 그룹의 잠재력을 최대한 활용하는 데 필수적입니다.

문제 이해:
한 개발자가 정규식 일치를 수행하는 코드 블록을 상속받아 당황했습니다. 정규식 패턴으로 얻은 결과:

var pattern = @"\[(.*?)\]";
로그인 후 복사

사용자 입력 "Josh Smith [jsmith]"의 경우 결과는 간단해 보입니다.

matches[0].Value == "[jsmith]"
로그인 후 복사

그러나 개발자는 의아해합니다. 추가 결과 기준:

matches[0].Groups[1].Value == "jsmith"
로그인 후 복사

질문에 답하기:

1. "jsmith"가 match[0].Groups[1].Value와 일치하는 이유는 무엇입니까?
정규식 패턴에는 (.*?)로 표시되는 단일 캡처 그룹이 포함되어 있습니다. 이 캡처링 그룹은 여는 대괄호와 닫는 대괄호 사이의 모든 문자와 일치합니다. 이 경우 "jsmith"를 캡쳐합니다.

2. 일치하는 그룹은 몇 개입니까[0].그룹은 항상 저장합니까?
그룹 컬렉션은 일반적으로 전체 일치와 마지막 일치라는 두 그룹을 저장합니다. 그러나 그룹 수는 정규식 패턴에 지정된 캡처 그룹에 따라 달라질 수 있습니다.

추가 설명:

  • match.Groups [0]은 캡처 그룹 수에 관계없이 항상 전체 일치를 나타냅니다.
  • match.Groups[1]는 (. *?).
  • match.Groups[1].Captures는 그룹 내의 개별 캡처를 포함하는 Capture 개체의 컬렉션입니다.

예:
더 복잡한 패턴을 고려합니다.

var pattern = @"\[(.*?)\](.*)";
로그인 후 복사

"무시된 [john] John Johnson" 입력의 경우:

  • match.Groups [0].Value는 "[john] John Johnson"입니다.
  • match.Groups[1].Value는 "john"입니다.
  • match.Groups[2].Value는 "John Johnson"입니다.

위 내용은 C# 정규식에서 `matches[0].Value`와 `matches[0].Groups[1].Value`의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿