Java 正则表达式错误 - 无组 1

Poc*_*id2 5 java regex exception

我在我的项目中将此作为 UnitTest 运行

public class RadioTest {

    private static Pattern tier;
    private static Pattern frequency;
    private static Pattern state;

    static {
        tier = Pattern.compile("Tier: \\d");
        frequency = Pattern.compile("Frequency: \\d{3}");
        state = Pattern.compile("State: (OFF|ON)");
    }

    @Test
    public void test() {
        String title = "Tier: 2";
        String title2 = "Frequency: 135";
        String title3 = "State: ON";

        assertTrue(tier.matcher(title).matches());
        assertTrue(frequency.matcher(title2).matches());
        assertTrue(state.matcher(title3).matches());

        Matcher m = tier.matcher(title);

        System.out.println(m.find());
        System.out.println(m.group(1));
    }

}
Run Code Online (Sandbox Code Playgroud)

但是我遇到了一个错误,IndexOutOfBoundsException: No group 1 我知道这与 有关m.group(1),但是有什么问题呢?在控制台中,我也truem.find(). 我搜索了如何使用正则表达式,但它显示这样做。

zap*_*apl 5

Pattern.compile("Tier: \\d");
Run Code Online (Sandbox Code Playgroud)

未定义组,因此此表达式匹配,但您无法提取组。你可能想要这样做:

Pattern.compile("Tier: (\\d)");
Run Code Online (Sandbox Code Playgroud)

也适用于您的其他表达。您需要()将要提取为组的部分括起来。