我想检查文本是否包含数字而不是问题,所以我使用正则表达式编写了以下Java代码:
private static void containNumberNoQ(String commentstr){
String urlPattern = "[^?]\\s\\d[^?]";
Pattern p = Pattern.compile(urlPattern,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(commentstr);
if (m.find()) {
System.out.println("yes");
}
}
但是当我用下面的句子尝试它时,它匹配,即使句子有一个问号:
just 2% of the result?
为什么?
答案 0 :(得分:4)
使用字符串锚$
的结尾。同样,\\d
数字不一定在问题的末尾,因此您需要匹配它们之间的可能字符
\\b\\d.*[^?]$
答案 1 :(得分:2)
?
试试这个。这会找到没有<image>
和数字的句子。