问题描述
我有一小段代码
String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
if(s.matches("[a-z]"))
{
System.out.println(s);
}
}
应该打印
dkoe
但它什么也没打印!!
推荐答案
欢迎使用 Java 的错误命名 .matches()
方法......它尝试并匹配所有输入.不幸的是,其他语言也纷纷效仿:(
Welcome to Java's misnamed .matches()
method... It tries and matches ALL the input. Unfortunately, other languages have followed suit :(
如果您想查看正则表达式是否与输入文本匹配,请使用 Pattern
、Matcher
和 .find()
方法匹配器:
If you want to see if the regex matches an input text, use a Pattern
, a Matcher
and the .find()
method of the matcher:
Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher(inputstring);
if (m.find())
// match
如果你确实想看输入是否只有小写字母,你可以使用.matches()
,但你需要匹配一个或多个字符:附加一个+
到您的字符类,如 [az]+
.或者使用 ^[a-z]+$
和 .find()
.
If what you want is indeed to see if an input only has lowercase letters, you can use .matches()
, but you need to match one or more characters: append a +
to your character class, as in [a-z]+
. Or use ^[a-z]+$
and .find()
.
这篇关于正则表达式在 String.matches() 中不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!