>Java >java지도 시간 >제목은 다음과 같습니다. 캡처 그룹은 Java 정규식에서 어떻게 작동하며 그 이점은 무엇입니까?

제목은 다음과 같습니다. 캡처 그룹은 Java 정규식에서 어떻게 작동하며 그 이점은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-10-28 02:06:301117검색

The title could be:

How do capturing groups work in Java regex and what are their benefits?

Java Regex에서 그룹 캡처

Java 정규식에서 그룹 캡처를 이해하면 패턴 일치 기능을 향상시킬 수 있습니다. 제공하신 코드를 자세히 살펴보겠습니다.

정규식 "(.)(d )(.)"는 세 개의 캡처 그룹으로 구성됩니다.

  • 첫 번째 그룹(그룹 1): 다음 그룹까지 임의의 문자와 0번 이상(*) 일치합니다.
  • 두 번째 그룹(그룹 2): 일련의 숫자를 한 번 이상 일치합니다( ).
  • 세 번째 그룹(그룹 3): 그룹 2의 일치 이후 모든 문자를 0번 이상(*) 일치합니다.

이 정규식을 실행할 때 첫 번째 그룹에 사용된 수량자 유형에 문제가 발생합니다. 욕심 많은 수량자()는 가능한 한 많은 텍스트와 일치하므로 예상치 못한 결과가 발생합니다. 이 문제를 해결하기 위해 조건을 충족하면서 가능한 한 적은 수의 문자와 일치하는 거부 수량자(?)로 대체합니다.

개선된 정규 표현식:

String pattern = "(.*?)(\d+)(.*)";

이 수정으로 인해 첫 번째 그룹은 더 이상 사용 가능한 모든 문자와 일치하지 않습니다. 대신 첫 번째 숫자에서 멈춰 더 바람직한 출력을 제공합니다.

group 1: This order was placed for QT
group 2: 3000
group 3: ! OK?

그룹 캡처는 여러 가지 이점을 제공합니다.

  • 패턴 분해: 정규식을 논리적 섹션으로 나누어 읽고 이해하기가 더 쉽습니다.
  • 역참조: 캡처된 그룹은 나중에 역참조를 사용하여 정규식에서 참조할 수 있으므로 강력한 패턴이 가능합니다. 어울리는. 예를 들어, 특정 문자 순서가 텍스트의 다른 곳에 존재하고 반복되는지 확인할 수 있습니다.
  • 중첩 그룹화: 그룹은 서로 중첩될 수 있으므로 더욱 복잡하고 다양하게 만들 수 있습니다. 패턴.

Java 6에서는 순서에 의해서만 그룹을 참조할 수 있습니다. 그러나 Java 7 이상에서는 명명된 그룹이 더 큰 유연성과 사용 편의성을 제공합니다.

위 내용은 제목은 다음과 같습니다. 캡처 그룹은 Java 정규식에서 어떻게 작동하며 그 이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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