从正则表达式中提取子字符串
Extract Substring from Regex
我有一个输入字符串,在 java 中应该如下所示:
String input = add entity <a-zA-Z>,<a-zA-z>
现在我想检查给定的字符串是否具有正确的格式。如果是这样我想得到手的话。
我已经有了检查部分
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
有没有人对我如何解决这个问题有建议?
非常感谢你们。
Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1
此错误是由于您的正则表达式模式没有捕获组 #1。
您可以将模式更改为:
Pattern pattern = Pattern.compile("add entity ([a-zA-Z]*,[a-zA-Z]*)");
因此 "add entity "
的一部分被捕获在第 1 组中。请注意,不需要在正则表达式模式中转义逗号。
我有一个输入字符串,在 java 中应该如下所示:
String input = add entity <a-zA-Z>,<a-zA-z>
现在我想检查给定的字符串是否具有正确的格式。如果是这样我想得到手的话。
我已经有了检查部分
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
有没有人对我如何解决这个问题有建议? 非常感谢你们。
Exception in thread "main" java.lang.IndexOutOfBoundsException: No group 1
此错误是由于您的正则表达式模式没有捕获组 #1。
您可以将模式更改为:
Pattern pattern = Pattern.compile("add entity ([a-zA-Z]*,[a-zA-Z]*)");
因此 "add entity "
的一部分被捕获在第 1 组中。请注意,不需要在正则表达式模式中转义逗号。