【发布时间】:2014-07-31 02:12:47
【问题描述】:
Matcher headerMatcher = Pattern.compile("([a-zA-Z]+[a-zA-Z\\s]*)[\\s]+(\\d+)")
.matcher("jumping around 9");
因此,第一个捕获组应该是任何包含至少一个字母字符的字符串。 以下是这方面的例子:
- 示例一
- A B C
- A b c d e ff ee ggg aaa
第二个捕获组只是数字。
- 1
- 22
- 333
所以,这是我捕捉这两个群体的尝试:
System.out.println(headerMatcher.group(1));
System.out.println(headerMatcher.group(2));
结果如下:
run:
Exception in thread "main" java.lang.IllegalStateException: No match found
at java.util.regex.Matcher.group(Matcher.java:485)
at Main.main(Main.java:51)
Java Result: 1
在http://www.regexplanet.com/advanced/java/index.html测试后
这是我的预期:
有些不对劲,我不知道为什么。
【问题讨论】:
-
我从该帖子中接受的答案中发现的问题是它没有明确说明用户需要调用
Matcher#matches函数的原因。它只是说他们必须这样做。我相信@anubhava 给出的答案对于这个问题的总体响应更有帮助。 -
是的,不是对答案提出异议,只是指出问题本质上是相互重复的。