我写了一个正则表达式,它应该检查字符串是否包含单词'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
你能帮我解决什么问题吗?
答案 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+.";