【问题标题】:Java regex get unmatched portionJava regex 获得不匹配的部分
【发布时间】:2010-09-20 21:51:21
【问题描述】:

我正在匹配表单的正则表达式

abc.*def.*pqr.*xyz

现在字符串abc123def456pqr789xyz 将匹配模式。 我想用匹配器找到字符串 123、456、789。

最简单的方法是什么?

【问题讨论】:

    标签: java regex


    【解决方案1】:

    将正则表达式更改为abc(.*)def(.*)pqr(.*)xyz,括号将自动绑定到

    请参阅Pattern class 的文档,尤其是Groups and Capturing,了解更多信息。

    示例代码:

    final String needle = "abc(.*)def(.*)pqr(.*)xyz";
    final String hayStack = "abcXdefYpqrZxyz";
    
    // Use $ variables in String.replaceAll()
    System.out.println(hayStack.replaceAll(needle, "_$1_$2_$3_"));
    // Output: _X_Y_Z_
    
    
    // Use Matcher groups:
    final Matcher matcher = Pattern.compile(needle).matcher(hayStack);
    while(matcher.find()){
        System.out.println(
            "A: " + matcher.group(1) +
            ", B: " + matcher.group(2) +
            ", C: " + matcher.group(3)
        );
    }
    // Output: A: X, B: Y, C: Z
    

    【讨论】:

      【解决方案2】:

      这是一个正则表达式,可以满足您的需要。

      abc(\\d*)def(\\d*)pqr(\\d*)xyz
      

      但是,我们应该有更多输入字符串的示例,以及应该匹配的内容。

      【讨论】:

        猜你喜欢
        • 2012-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-05
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多