正则表达式匹配包含数字但不以问号结尾的文本

时间:2015-09-11 15:16:11

标签: java regex

我想检查文本是否包含数字而不是问题,所以我使用正则表达式编写了以下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?

为什么?

2 个答案:

答案 0 :(得分:4)

使用字符串锚$的结尾。同样,\\d数字不一定在问题的末尾,因此您需要匹配它们之间的可能字符

\\b\\d.*[^?]$

答案 1 :(得分:2)

?

试试这个。这会找到没有<image>和数字的句子。