Java正则表达式分组问题

Java正则表达式分组问题,java,regex,Java,Regex,我试图找出我遇到的一个Java正则表达式问题。这是1.6,但我认为这无关紧要。无论如何 我将有一些如下的输入数据 "Blah yadda yidda 44-Barack Obama, this that the other" 或 基本上,我想提取从数字到尾随标点符号的所有内容。在这两个示例中,我想提取输入 "Barack Obama" 及 我不能完全得到我需要使用的模式。我能得到的最接近的是这个 "[0-9]{1,2}-([A-Z -]*\\b*)" 然而,这给了我 "44-Barack

我试图找出我遇到的一个Java正则表达式问题。这是1.6,但我认为这无关紧要。无论如何

我将有一些如下的输入数据

"Blah yadda yidda 44-Barack Obama, this that the other"

基本上,我想提取从数字到尾随标点符号的所有内容。在这两个示例中,我想提取输入

"Barack Obama"

我不能完全得到我需要使用的模式。我能得到的最接近的是这个

"[0-9]{1,2}-([A-Z -]*\\b*)"
然而,这给了我

"44-Barack Obama"
我的代码是

Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Blah yadda yidda 44-Barack Obama, this that the other");
if (matcher.find())
    // This gives me "44-Barack Obama" but I want "Barack Obama".
    System.out.println(matcher.group());
有趣的是,我使用QuickREx Eclipse插件来测试这个模式,它返回正确的值。但是,运行上面的代码并不需要


有什么想法吗?

使用
matcher.group(1)
的结果,而不是
matcher.group()
。第二个表单返回前一个
matches
find
方法匹配的所有内容。第一种形式用于访问正则表达式中的各个捕获组。

使用
matcher.group(1)
,而不是
matcher.group()
。第二个表单返回前一个
matches
find
方法匹配的所有内容。第一个表单用于访问正则表达式中的各个捕获组。

Ouch!!我想阅读整个Javadoc是很重要的!埃里克森获奖。甚至在一分钟之内!!哎哟我想阅读整个Javadoc是很重要的!埃里克森获奖。甚至在一分钟之内!!
"44-Barack Obama"
Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Blah yadda yidda 44-Barack Obama, this that the other");
if (matcher.find())
    // This gives me "44-Barack Obama" but I want "Barack Obama".
    System.out.println(matcher.group());