代码之家  ›  专栏  ›  技术社区  ›  Rohit Banga

Java正则表达式获取不匹配部分

  •  6
  • Rohit Banga  · 技术社区  · 15 年前

    我正在匹配一个正则表达式的形式

    abc.*def.*pqr.*xyz
    

    现在是绳子 abc123def456pqr789xyz 将匹配模式。

    最简单的方法是什么?

    2 回复  |  直到 15 年前
        1
  •  8
  •   Sean Patrick Floyd    15 年前

    将正则表达式更改为 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
  •  1
  •   jjnguy Julien Chastang    15 年前

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

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