>  기사  >  Java  >  Java 정규식에서 그룹 캡처는 어떻게 작동합니까?

Java 정규식에서 그룹 캡처는 어떻게 작동합니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-28 22:25:30568검색

How do Capturing Groups Work in Java Regular Expressions?

Java Regex 캡처 그룹 이해

이 코드 조각에서는 Java의 정규식(regex) 라이브러리를 사용하여 문자열의 일부를 추출합니다. 정규식은 "(.)(d )(.)"로 정의됩니다. 여기서:

  • (.*): 다음 그룹 앞의 모든 문자와 일치합니다.
  • (d ): 이전 그룹 뒤의 모든 숫자와 일치합니다.
  • (.*): 이전 그룹 뒤의 모든 문자와 일치합니다.

정규식 실행

"이 주문은 QT3000에 대해 이루어졌습니다! OK?"라는 문자열에 대해 정규식을 실행하면 다음과 같은 결과가 생성됩니다.

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

그리디 수량자 이해

정규식에 사용되는 기본 수량자는 욕심입니다. 즉, 다음 그룹을 만족시키기 위해 가능한 한 많은 문자를 일치시킵니다. 이 경우 ".*"는 첫 번째 숫자가 발견될 때까지 전체 문자열과 일치하며 세 번째 그룹에는 문자가 남지 않습니다.

Reluctant Quantifier 사용

일치하려면 필요한 문자만 사용하려면 물음표로 표시되는 마지못해 한정자를 사용할 수 있습니다. "(.)"를 "(.?)"로 바꾸면 가능한 최소 문자 수와 일치하여 다음과 같이 출력됩니다.

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT
Found value: 3000

그룹 캡처의 장점

그룹 캡처를 통해 추가 사용을 위해 일치하는 문자열의 특정 부분을 추출할 수 있습니다. 이 예에서는 아래 코드 조각에서 볼 수 있듯이 "Matcher" 개체의 "group()" 메서드를 통해 각 그룹의 일치 값에 액세스할 수 있습니다.

<code class="java">Pattern pattern = Pattern.compile("(.*?)(\d+)(.*)");
Matcher matcher = pattern.matcher(line);
if (matcher.find()) {
    System.out.println("group 1: " + matcher.group(1));
    System.out.println("group 2: " + matcher.group(2));
    System.out.println("group 3: " + matcher.group(3));
}</code>

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

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