当前位置: 首页 > 面试题库 >

Java Regex错误-无组1

夏侯昆琦
2023-03-14
问题内容

我在我的项目中将其作为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));
    }

}

但是我有一个错误,IndexOutOfBoundsException: No group 1
我知道这与有关m.group(1),但是这是怎么回事?在控制台中,我也true从中看到m.find()。我搜索了如何使用正则表达式,但事实证明确实如此。


问题答案:
Pattern.compile("Tier: \\d");

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

Pattern.compile("Tier: (\\d)");

也适用于您的其他表情。您需要()将要提取的零件作为组围起来。



 类似资料:
  • 问题内容: 给定以下表人员(ec,名称,代码,dob,薪水) 问:列出收入高于平均工资的工作人员 我的儿子 这有什么问题? 问题答案: 除非在子句或选择列表中包含的子查询中,否则聚合可能不会出现在子句中,并且正在聚合的列是外部引用。 使用子句示例: 使用子句示例: 子句指定组或集合的搜索条件。只能与该语句一起使用。通常在子句中使用。当不使用时,就像一个条款。

  • 这个问题已经问了好几次了,我跟着这些问题试图解决这个问题。该项目成功构建并运行了几个小时前我关闭了电脑。这个问题让我抓狂,请帮助。 留言: build.gradle: 请帮忙。

  • 问题内容: 我将我的MySQL数据库插入WAMP服务器时遇到了麻烦。我打算发布模式的图像,但这是我不能的第一篇文章。 下面是执行的脚本。 但是然后我得到这个错误: 我不知道为什么。谁能帮我? 问题答案: 我迅速搜寻了你,它把我带到了这里。我引用: 如果您尝试添加名称已经在其他地方使用的约束,则会收到此消息 要检查约束,请使用以下SQL查询: 在此处查找更多信息,或尝试查看错误发生的位置。看起来像是

  • 我有带SP1和WindowsSDK7.1的VisualStudio2010。我还有VS2012和Windows kit 8。 当我运行和运行它给我错误: 它正在尝试查找VCBuild.exe。 我发现vcbuild已经被替换成msbuild了。 这是一个有效的错误吗? 我还发现在Windows7中,对于.NET3.5,您只需要从控制面板打开它。我已经看了关于stackoverflow的其他问题,比

  • 这是我的构建。 当我运行我的项目时,我看到了这个错误 错误:(59, 8) 错误: 无法访问.app活动组件Api23类文件 和 错误:任务“:app:compileDebugJavaWithJavac”的执行失败。 编译失败;有关详细信息,请参阅编译器错误输出。 我该如何解决这个问题???:(

  • 问题内容: 尝试在mysql中创建表时出现错误。 有解决的技巧吗? 错误: 问题答案: 查看有关外键约束的MySQL手册: 如果重新创建已删除的表,则该表必须具有符合引用该表的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引用的键上具有索引。如果不满足这些条件,MySQL将返回错误号1005,并在错误消息中引用错误150。 一些想法: 最好删除表,并使用格式正确的语法对其进行新建