>Java >java지도 시간 >여러 줄의 텍스트를 Java 정규 표현식과 올바르게 일치시키는 방법은 무엇입니까?

여러 줄의 텍스트를 Java 정규 표현식과 올바르게 일치시키는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-09 18:01:15297검색

How to Correctly Match Multiline Text with Java Regular Expressions?

정규 표현식과 여러 줄 텍스트 일치

여러 줄 텍스트 일치에는 줄바꿈 처리 및 고정이 필요한 경우가 많습니다. Java의 Pattern 클래스를 사용할 때 이를 지원할 수 있는 두 가지 수정자가 있습니다: Pattern.MULTILINE 및 String.matches(). 그러나 사용법에 혼동이 있을 수 있습니다.

Pattern.MULTILINE과 (?m)

Pattern.MULTILINE과 (?m)은 모두 동일한 용도로 사용됩니다. : 전체의 시작과 끝이 아니라 각 줄의 시작과 끝에서 ^ 및 $가 일치하도록 허용합니다. string.

String.matches() 대 Pattern.matcher()

String.matches()는 정규식이 전체 문자열과 일치할 것으로 예상합니다. 이는 여러 줄의 텍스트를 처리할 때 사용이 제한될 수 있음을 의미합니다.

예제 해결

제공된 예에서 (?m)은 String.matches( ), 바로 여기에 문제가 있습니다. 정규식은 여러 줄 텍스트의 일부만 캡처하므로 String.matches()는 전체 문자열을 일치시키지 못하고 false를 반환합니다.

다중 줄 일치의 올바른 사용법

여러 줄 텍스트를 올바르게 일치시키려면 Pattern.DOTALL 수정자와 함께 Pattern.compile()을 사용해야 합니다. 그러면 점(.)이 개행 문자와 일치할 수 있습니다. 업데이트된 코드 버전은 다음과 같습니다.

String test = "User Comments: This is \t a\ta \n test \n\n message \n";
String pattern = "^\s*User Comments:\s*(.*)";
Pattern regex = Pattern.compile(pattern, Pattern.DOTALL);
Matcher regexMatcher = regex.matcher(test);
if (regexMatcher.find()) {
    String result = regexMatcher.group(1);
}

이 코드는 여러 줄에서 "사용자 설명:" 뒤의 텍스트를 성공적으로 캡처합니다.

위 내용은 여러 줄의 텍스트를 Java 정규 표현식과 올바르게 일치시키는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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