我想检查给定字符串中是否存在任何特殊字符。 我尝试了以下模式,但没有奏效。因此,如果有任何有效答案,将会有所帮助。
Pattern p = Pattern.compile("[\\*&]");
Matcher m = p.matcher("a*a&a");
boolean b = m.matches();
if (b) {
System.out.println("Found");
} else {
System.out.println("Not Found");
}
它在javascript中工作。即[\ *&]。
答案 0 :(得分:3)
而不是:
boolean b = m.matches();
使用:
boolean b = m.find();
当Matcher#matches
仅在匹配从开始到结束的完整输入时返回true。
答案 1 :(得分:0)
matches()
使用^
和$
(分别为行首和行尾)自动锚定正则表达式。您的正则表达式因此转换为^[\\*&]$
,它只匹配字符串"*"
和"&"
。
您正在寻找:.*[\\*&].*
附注:嵌套在类中时,您无需转义*
:[*&]
表现为[\\*&]
。
答案 2 :(得分:0)
你的不匹配,因为它只是在寻找*
和&
查看contains
的简单方法是在开头和结尾放置带有.*
的正则表达式,例如:
Pattern p = Pattern.compile(".*[\\*&].*");