我正在匹配表单的正则表达式
abc.*def.*pqr.*xyz
现在字符串abc123def456pqr789xyz将匹配模式.
我想找到匹配器的字符串123,456,789.
最简单的方法是什么?
解决方法
将正则表达式更改为abc(.*)def(.*)pqr(.*)xyz,括号将自动绑定到
>变量$1到$3 if
你使用String.replaceAll()或
> Matcher.group(n)如果您使用
Matcher.find()
有关详细信息,请参阅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