正则表达式在 String.matches() 中不起作用
问题:
A用户编写了一个代码片段来匹配仅包含小写字母的字符串字母:
String[] words = {"{apf","hum_","dkoe","12f"}; for(String s:words) { if(s.matches("[a-z]")) { System.out.println(s); } }
但是,尽管期望输出为“dkoe”,但代码不会打印任何内容。
答案:
相反顾名思义,Java 的 String.matches() 方法将整个输入字符串与正则表达式进行匹配。要仅匹配字符串的一部分,请使用 Pattern 和 Matcher:
Pattern p = Pattern.compile("[a-z]+"); Matcher m = p.matcher(inputString); if (m.find()) // match
或者,如果要匹配整个字符串,请在 matches() 方法中将 a 附加到字符类:
if(s.matches("[a-z]+"))
或者使用完整的正则表达式模式:
if(s.matches("^[a-z]+$"))
这将匹配仅包含小写字母的字符串,如^ 和 $ 锚确保匹配覆盖整个输入字符串。
以上是为什么我的正则表达式在 Java 的 String.matches() 中不起作用?的详细内容。更多信息请关注PHP中文网其他相关文章!