应该检查字符串包含特定单词的正则表达式

时间:2014-12-15 13:44:48

标签: java regex

我写了一个正则表达式,它应该检查字符串是否包含单词'Page'并且在它之后是任何数字 这是代码:

public static void main(String[] args) {
    String str1 = "12/15/14  7:01:44    Page   10 ";
    String str2 = "12/15/14  7:01:44    Page    9 ";
    System.out.println(containsPage(str2));
}



private static boolean containsPage(String str) {
    String regExp = "^.*Page[ ]{1,}[0-9].$";
    return Pattern.matches(regExp, str); 
}

结果:str1:false,str2:true

你能帮我解决什么问题吗?

2 个答案:

答案 0 :(得分:5)

将正则表达式更改为以下内容:

String regExp = "^.*Page[ ]{1,}[0-9]+.$";

以便它匹配一个或多个数字(因此[0-9]+)。

您也不需要边界匹配器(^$),因为Pattern#matches将匹配整个输入字符串; [ ]{1,}相当于[ ]+

String regExp = ".*Page +[0-9]+.";

答案 1 :(得分:1)

将其更改为:

String regExp = "^.*Page[ ]{1,}[0-9]+.$";  //or \\d+
                                    ↑ 

[0-9]与第二个示例中的9匹配,.与空格匹配。

在第一个示例中,[0-9]匹配1,.匹配0并且保持空间不匹配。请注意,此处并不真正需要^$

您的正则表达式可以简化为:

String regExp = ".*Page\\s+\\d+.";