Java Regex分组问题

时间:2009-04-13 17:40:58

标签: java regex

我正试图找出我正在使用的Java正则表达式问题。这是1.6,但我认为不重要。总之...

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

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

"Something here, there 22-Hyphenated-example.  Hi there folks"

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

"Barack Obama"

"Hyphenated-example"

我无法获得我需要使用的模式。我能得到的最接近的是......

"[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插件来测试这个模式,并返回正确的值。但是,运行上面的代码不会。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

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