정규식 일치 항목을 배열로 검색
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!