2009-09-06 98 views
2

match.matches()返回false。这很奇怪,因为如果我把这个正则表达式和测试字符串rubular.com,显示两个匹配。我究竟做错了什么?Java正则表达式不工作 - 为什么?

Pattern regex = Pattern.compile("FTW(((?!ODP).)+)ODP"); 
    Matcher match = regex.matcher("ZZZMMMJJJOOFTWZMJZMJODPZZZMMMJJJOOOFTWMZJOMZJOMZJOODPZZZMMMJJJOO"); 

    if (match.matches()) { 
     System.out.println("match found"); 
    } 
    else { 
     System.out.println("match not found"); 
    } 

回答

12

Matcher.matches回报是否整个区域的模式匹配。

请尝试使用find代替。 (当然在你的例子中,这个工作正常。)

8

Matcher.matches()方法试图将整个字符串匹配到模式。改变你的模式:

".*FTW(((?!ODP).)+)ODP.*"