我还在学习正则表达式。
我正在尝试检查字符串是否包含任何小写值。如果是的话,我只想返回false。
我已经在这里阅读了答案,但它们似乎在我的程序中不起作用,但是,它们在线上正则函数模拟器中工作。
if (str.matches("[a-z]+"){
System.out.println("removed");
return false;
这似乎突出了regexr中的小写字母,但没有在我的程序中。有什么帮助吗?
答案 0 :(得分:4)
如果您正在寻找@Adrian Leonhard提供的正确的正则表达式.*[a-z].*
作为上述评论,那么确实是正确的。但是,我认为重要的是要提到正则表达式需要很长时间才能编译,如果这个if语句嵌套在循环中,那么在java.util.regex.*
中使用完整的正则表达式实现可能是个好主意。而不是String中提供的便捷方法。为此,首先从字符串中编译Pattern
对象。
Pattern p = Pattern.compile(".*[a-z].*");
这样只需要编译一次正则表达式,而不是每次调用String#matches(String regex)
。正则表达式编译非常computationally intensive。然后,使用输入字符串创建匹配器。
Matcher m = p.matcher(str);
现在,请致电Matcher#find()
if(m.find()) {
//Your code here
}
但是,您也可以测试一下
str.toUpperCase().equals(str)
由你决定。如果绝对必要,我只会使用正则表达式,因为它会减慢你的程序速度,在这种情况下并不是很优雅。至少你现在知道如何正确使用它们。