> Java > java지도 시간 > Java에서 모든 정규식 일치 항목을 배열로 효율적으로 검색하는 방법은 무엇입니까?

Java에서 모든 정규식 일치 항목을 배열로 효율적으로 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
풀어 주다: 2024-11-28 05:50:21
원래의
1065명이 탐색했습니다.

How to Efficiently Retrieve All Regex Matches as an Array in Java?

정규식 일치 항목을 배열로 검색

Java에서는 주어진 패턴이 특정 문자열과 일치하는지 확인하는 것이 간단합니다. 그러나 여러 일치 항목을 처리할 때 이를 배열로 수집하는 것이 어려울 수 있습니다. 이 문제를 해결하려면 이 가이드를 자세히 살펴보고 정규식 일치 항목을 효과적으로 활용하는 방법을 알아보세요.

반복 접근 방식

일치 항목을 배열에 누적하려면 Matcher와 Matcher의 조합을 활용하세요. 문자열:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

...

List<String> allMatches = new ArrayList<>();
Matcher m = Pattern.compile("your regular expression here")
    .matcher(yourStringHere);
while (m.find()) {
  allMatches.add(m.group());
}
로그인 후 복사

이 코드는 입력 문자열 내에서 일치하는 하위 문자열을 체계적으로 찾는 Matcher 개체를 설정합니다. 성공한 각 일치 항목은 allMatches 목록에 추가됩니다. 마지막으로 allMatches.toArray(new String[0]):

String[] matchesArr = allMatches.toArray(new String[0]);
로그인 후 복사

Lazier Matches를 위한 Custom Iterable

을 사용하여 배열로 변환합니다. 불필요하게 일치 항목을 순회하고 즉시 소비하는 게으른 반복자 처리:

public static Iterable<MatchResult> allMatches(
    final Pattern p, final CharSequence input) {
  return new Iterable<MatchResult>() {
    public Iterator<MatchResult> iterator() {
      return new Iterator<MatchResult>() {
        // Internal Matcher
        final Matcher matcher = p.matcher(input);
        // Lazy-filled MatchResult
        MatchResult pending;

        public boolean hasNext() {
          if (pending == null && matcher.find()) {
            pending = matcher.toMatchResult();
          }
          return pending != null;
        }

        public MatchResult next() {
          if (!hasNext()) { throw new NoSuchElementException(); }
          MatchResult next = pending;
          pending = null;
          return next;
        }

        public void remove() { throw new UnsupportedOperationException(); }
      };
    }
  };
}
로그인 후 복사

다음과 같이 사용하세요.

for (MatchResult match : allMatches(
    Pattern.compile("[abc]"), "abracadabra")) {
  System.out.println(match.group() + " at " + match.start());
}
로그인 후 복사

위 내용은 Java에서 모든 정규식 일치 항목을 배열로 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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