它应该是java正则表达式不匹配

时间:2014-06-10 10:38:57

标签: java regex

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进行测试后 这就是我的预期:

http://www.regexplanet.com/advanced/java/index.html

有些东西不对,我不知道为什么。

2 个答案:

答案 0 :(得分:6)

如果您在致电java.lang.IllegalStateException

之前未致电Matcher#matchesMatcher#find,您将获得Matcher#group(int)

答案 1 :(得分:-1)

错误在java.util.regex.Matcher.group(...)中找不到匹配只是说明收到的字符串与任何地方的正则表达式都不匹配。

您想要使用: 如果(matcher.find())