Matcher headerMatcher = Pattern.compile("([a-zA-Z]+[a-zA-Z\\s]*)[\\s]+(\\d+)")
.matcher("jumping around 9");
因此,第一个捕获组应该是包含至少一个字母字符的任何字符串。 以下是这方面的例子:
第二个捕获组只是数字。
所以,这是我试图抓住这两个群体的方法:
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进行测试后 这就是我的预期:
有些东西不对,我不知道为什么。
答案 0 :(得分:6)
如果您在致电java.lang.IllegalStateException
Matcher#matches
或Matcher#find
,您将获得Matcher#group(int)
答案 1 :(得分:-1)
错误在java.util.regex.Matcher.group(...)中找不到匹配只是说明收到的字符串与任何地方的正则表达式都不匹配。
您想要使用: 如果(matcher.find())