Java模式匹配器未相应分组

时间:2018-09-02 16:22:26

标签: java regex pattern-matching

我们有一个模式:

Pattern TRANSLATION_RAW_PATTERN =  Pattern.compile("(?<key>(\\$\\{(?<keydata>.*?)\\}))|(?<value>(.*?))")

和输入:

$ {something} $ {something.else}

使用在线模式匹配器,这将导致以下两个关键数据组:

“某物”和“ something.else”

但是,它实际上导致了“ something} $ {something.else”

    String rawContents = getContents();
    Matcher contentMatcher = TRANSLATION_RAW_PATTERN.matcher(rawContents);

    while (contentMatcher.matches())
    {
        final String keyGroupMatching = contentMatcher.group("keydata");
        if (keyGroupMatching == null)
        {
            break;
        }

        rawContents = rawContents.replace("${" + keyGroupMatching + "}", I18n.translateToLocal(keyGroupMatching));
        contentMatcher = TRANSLATION_RAW_PATTERN.matcher(rawContents);
    }

    return rawContents;

这种情况已经在第一次迭代中发生。第一次检索该组时,它已经检索错了。

我们在这里有点困惑,因为我们尝试过的所有在线模式匹配器都会返回正确的分组。

0 个答案:

没有答案