Java正则表达式获得无与伦比的部分

时间:2010-09-20 13:29:19

标签: java regex

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

abc.*def.*pqr.*xyz

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

最简单的方法是什么?

2 个答案:

答案 0 :(得分:8)

将正则表达式更改为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

答案 1 :(得分:1)

这是一个正如你所需要的正则表达式。

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

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