>Java >java지도 시간 >`String.matches()`가 정규 표현식에서 예상대로 작동하지 않는 이유는 무엇입니까?

`String.matches()`가 정규 표현식에서 예상대로 작동하지 않는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-26 05:18:10404검색

Why Doesn't `String.matches()` Work as Expected with Regular Expressions?

String.matches()가 예상 정규식과 일치하지 않습니다

String.matches("[a-z)를 사용하여 특정 패턴을 일치시키려고 할 때 ]"), 문자열에 소문자가 포함되어 있음에도 불구하고 예상대로 작동하지 않는다는 사실이 놀랍습니다. letter.

설명:

Java의 String.matches() 메소드는 전체 입력 문자열이 제공된 정규 표현식과 일치하는지 확인하도록 설계되었습니다. 이 경우 "[a-z]" 표현식은 단일 소문자 일치를 시도합니다. 그러나 코드는 단어 배열의 각 문자열을 확인하며 그 중 소문자로 시작하는 문자열은 없습니다.

해결책:

문자열 내의 패턴을 일치시키려면 다음 중 하나를 수행하세요. Pattern 및 Matcher 클래스를 사용해야 합니다. Pattern 클래스는 정규식을 Matcher 개체로 컴파일한 후 입력 문자열에서 일치 항목을 확인하는 데 사용할 수 있습니다.

다음은 Pattern 및 Matcher를 사용하여 일치 항목을 찾는 코드의 수정된 버전입니다.

Pattern p = Pattern.compile("[a-z]+");
for(String s:words)
{
    Matcher m = p.matcher(s);
    if (m.find())
    {
        System.out.println(s);
    }
}

이제 이 코드는 "dkoe"를 올바르게 인쇄합니다.

위 내용은 `String.matches()`가 정규 표현식에서 예상대로 작동하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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