2

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");
    }
4

2 回答 2

12

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

尝试find改用。(当然,以您的示例为例,这很好用。)

于 2009-09-06T15:44:57.067 回答
9

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

".*FTW(((?!ODP).)+)ODP.*"
于 2009-09-06T15:47:25.390 回答