正则表达式适用于其他引擎,但不适用于Java Pattern / Matcher

时间:2011-10-06 14:46:44

标签: java regex

我无法弄清楚为什么这个正则表达式不起作用,我已经在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作为另一个比较选项实现之前需要开始工作的一个例子。

2 个答案:

答案 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()