从Regex中提取子字符串

时间:2017-02-15 19:54:19

标签: java regex matcher

我有一个输入字符串,在java中应该如下所示:
String input = add entity <a-zA-Z>,<a-zA-z>
现在我想检查给定的String是否具有正确的格式。如果是这样的话,我想得到用手的话。

我已经有了检查部分

boolean foo(String input) {
    Pattern pattern = Pattern.compile("add entity [a-zA-Z]*[,][a-zA-Z]*");
    Matcher matcher = pattern.matcher(input);
    return matcher.matches();
}

我在这里找到了其他几个问题,他们用

解决了类似的问题
if(matcher.find()) {
    System.out.println(matcher.group(1));
}

但如果我这样做,控制台总会引发异常:

Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1

有没有人建议我如何解决这个问题? 非常感谢你们。

1 个答案:

答案 0 :(得分:1)

  

Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1

此错误是由于您的正则表达式模式没有捕获的组#1。

您可以将模式更改为:

Pattern pattern = Pattern.compile("add entity ([a-zA-Z]*,[a-zA-Z]*)");

以便在组#1中捕获"add entity "的一部分。请注意,不需要以正则表达式模式转义逗号。