이 작은 코드 조각이 있습니다
String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
if(s.matches("[a-z]"))
{
System.out.println(s);
}
}
인쇄 예정
dkoe
그러나 아무것도 인쇄하지 않습니다 !!
답변
Java의 이름이 잘못된 .matches()
메소드에 오신 것을 환영합니다 . 모든 입력을 시도하고 일치시킵니다. 불행하게도, 다른 언어들은 다음과 같이 따라 갔다 :
정규식이 입력 텍스트와 일치하는지 확인하려면 Pattern
, a Matcher
및 .find()
매처 의 메소드를 사용하십시오.
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher(inputstring);
if (m.find())
// match
입력 내용에 소문자 만 포함되어 있는지 확인하려면을 사용할 수 .matches()
있지만 하나 이상의 문자를 일치시켜야합니다 . +
에서와 같이 문자 클래스에 a 를 추가 하십시오 [a-z]+
. 또는 사용 ^[a-z]+$
하고 .find()
.
답변
[a-z]
a와 z 사이 의 단일 문자 와 일치합니다 . "d"
예를 들어 문자열이 그냥 이면 일치하고 인쇄되었을 것입니다.
[a-z]+
하나 이상의 문자와 일치하도록 정규식을 변경해야합니다 .
답변
String.matches
하위 문자열뿐만 아니라 전체 문자열이 정규식과 일치 하는지 여부를 반환합니다 .
답변
java의 정규 표현식 구현은 전체 문자열과 일치하려고합니다.
그것은 일치하는 부분을 찾으려고하는 펄 정규 표현식과 다릅니다.
소문자가 아닌 문자열을 찾으려면 패턴을 사용하십시오. [a-z]+
하나 이상의 소문자를 포함하는 문자열을 찾으려면 패턴을 사용하십시오. .*[a-z].*
답변
익숙한
String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
if(s.matches("[a-z]+"))
{
System.out.println(s);
}
}
답변
나는 같은 문제에 한 번 직면했다.
Pattern ptr = Pattern.compile("^[a-zA-Z][\\']?[a-zA-Z\\s]+$");
위의 실패!
Pattern ptr = Pattern.compile("(^[a-zA-Z][\\']?[a-zA-Z\\s]+$)");
위의 (
및 내의 패턴으로 작업했습니다 )
.
답변
정규식 은 길이가 1 인 문자열과 만 일치하므로 [a-z]
일치하지 않습니다 .dkoe
[a-z]+