java – 正则表达式检查String是否包含非数字失败
发布时间:2020-12-15 04:24:16 所属栏目:Java 来源:网络整理
导读:为什么这会失败? String n = "h107";if (n.matches("D+")) { System.out.println("non digit in it");} 我有一个晚上睡觉,我仍然没有得到它. 我现在得到了解决方案: if (n.matches(".*D+.*")) { 但在我(可能缺乏知识)中,第一个也应该匹配.如果它必须匹
为什么这会失败?
String n = "h107"; if (n.matches("D+")) { System.out.println("non digit in it"); } 我有一个晚上睡觉,我仍然没有得到它. if (n.matches(".*D+.*")) { 但在我(可能缺乏知识)中,第一个也应该匹配.如果它必须匹配一个完整的String,那么行开头的’^’字符的重点是什么. 解决方法
这是.matches()的反复出现的问题:它被错误命名.它不进行正则表达式匹配.而问题在于,甚至其他语言也成为了这种错误的牺牲品(python就是一个例子).
问题是它会尝试匹配您的整个输入. 使用模式,匹配器和.find()代替(.find()进行真正的正则表达式匹配,即查找与输入中的任何位置匹配的文本): private static final Pattern NONDIGIT = Pattern.compile("D"); // in code if (NONDIGIT.matcher(n).find()) // there is a non digit 实际上你应该使用Pattern; String的.matches()每次都会重新编译一个模式.使用模式,它只编译一次. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |