【发布时间】:2012-02-13 22:55:38
【问题描述】:
我有一小段代码
String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
if(s.matches("[a-z]"))
{
System.out.println(s);
}
}
应该打印
dkoe
但它什么也没打印!!
【问题讨论】:
-
Java 的
matches在正则表达式的开头放置一个 ^ 并在结尾放置一个 $ 。所以matches("[a-z]")实际上会寻找 /^[a-z]$/ 。 -
是的@Robino,你是绝对正确的。
-
当然,如果您希望
matches查找[a-z]的任何出现,那么它应该匹配它们吗?我不指望matches会根据正则表达式单独检查每个字符。 -
@Toru 在 String.Matches 的 java 文档页面上 - 还有哪里? “java字符串匹配文档”的随意谷歌显示,在顶部结果中,短语“str.matches(regex)产生与表达式完全相同的结果”。重要的词是“确切地”。
-
@PhilHibbs 是的,这也是我的期望!