Java正则表达式得到不匹配的部分

标签 java regex

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

abc.*def.*pqr.*xyz

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

最简单的方法是什么?

最佳答案

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

请参阅 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

关于Java正则表达式得到不匹配的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751914/

相关文章:

PHP:preg_replace文件路径

java - 如何在流式传输时重命名放置在远程位置的文件

java - 如何解决 swing 监听器内存泄漏?

java - 如何使用 Graphviz 从点文件格式生成 PNG 图像

java - 如何阻止构造函数在派生类中尝试使用私有(private)但不起作用的java继承中覆盖

php - 检查字符串是否同时包含空格或特殊字符

php - 将第一个字母设为大写

带有应用程序标签和自定义标签的 Android Logcat 正则表达式

java - 将数据从 kotlin Activity 传递到 java DialogFragment

regex - 如何在 CMake 中获取正则表达式的组匹配?