Java Regex不工作 - 为什么?

Nic*_*ner 2 java regex string arraylist negative-lookahead

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

    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");
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 12

Matcher.matches返回整个区域是否与模式匹配.

请尝试使用find.(当然,以你的例子,这很好.)


pax*_*blo 9

Matcher.matches()方法尝试将整个字符串与模式匹配.将您的模式更改为:

".*FTW(((?!ODP).)+)ODP.*"
Run Code Online (Sandbox Code Playgroud)