정규 표현식과 여러 줄 텍스트 일치
여러 줄 텍스트 일치에는 줄바꿈 처리 및 고정이 필요한 경우가 많습니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!