【问题标题】:Java Regex Grouping ProblemJava 正则表达式分组问题
【发布时间】:2009-04-13 17:40:58
【问题描述】:

我正在尝试找出我遇到的 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 插件来测试这个模式,它会返回正确的值。但是,运行上面的代码并没有。

有什么想法吗?

【问题讨论】:

    标签: java regex


    【解决方案1】:

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

    【讨论】:

    • 哎哟!!我想阅读 ENTIRE Javadoc 很重要!埃里克森获奖。甚至不到一分钟!
    猜你喜欢
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-04
    相关资源
    最近更新 更多