我无法弄清楚为什么这个正则表达式不起作用,我已经在php和其他正则表达式引擎中测试了它工作正常并且匹配“,AA”。
Pattern p = Pattern.compile("(^|,)AA(,|$)");
Matcher m = p.matcher("A,B,AA,C,D");
//assigns as false
boolean matches = m.matches();
旁注:我有一个分割/数组二进制搜索方法,用于对字符串进行IN_SET / NOT_IN_SET搜索。这只是我在将regex作为另一个比较选项实现之前需要开始工作的一个例子。
答案 0 :(得分:4)
matches()
验证整个字符串。您想要使用find()
。
来自API:
matches()
尝试将整个区域与模式匹配。
- http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#matches()
和
find()
尝试查找与模式匹配的输入序列的下一个子序列。
- http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html#find()
答案 1 :(得分:0)
Matcher
将整个区域与模式匹配。使用find()
。