java - 正则表达式在 String.matches() 中不起作用

标签 java regex

我有一小段代码

String[] words = {"{apf","hum_","dkoe","12f"};
for(String s:words)
{
    if(s.matches("[a-z]"))
    {
        System.out.println(s);
    }
}

应该打印

dkoe

但它什么也没打印!!

最佳答案

欢迎来到 Java 的错名 .matches()方法...它尝试并匹配所有输入。不幸的是,其他语言也纷纷效仿:(

如果您想查看正则表达式是否匹配输入文本,请使用 PatternMatcher.find() 方法匹配器:

Pattern p = Pattern.compile("[a-z]");
Matcher m = p.matcher(inputstring);
if (m.find())
    // match

如果您确实想要查看输入是否只有小写字母,您可以使用 .matches(),但您需要匹配一个或多个字符:附加一个 + 到你的字符类,如 [a-z]+。或者使用 ^[a-z]+$.find()

关于java - 正则表达式在 String.matches() 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8923398/

相关文章:

java - 非静态方法 next() 不能从静态上下文中引用

java - 使用camel dsl接收sqs消息属性?

regex - 在 Notepad++ 中用\t 替换正则表达式

javascript - 在脚本末尾发布引用

regex - 使用 "OR"条件的正则表达式

java - 匹配特定模式之前的任何内容

java - 如何简化相似的构造函数?

java - 为什么这个方法不执行这段代码中的其他方法?

java - 获取泛型类型的泛型类型

ruby - 使用 Ruby 1.8.7,当字符串未与特定文本绑定(bind)时,是否进行正则表达式替换?