考虑以下代码
import java.util.regex.*;
public static void main(String[] args) {
String str = "Suneetha N.=9876543210, Pratish Patil=9898989898";
Pattern pattern = Pattern.compile("(\\w+)(\\s\\w+)(=)(\\d{10})");
Matcher matcher = pattern.matcher(str);
String newStr = matcher.replaceAll("$4:$2,$1");
System.out.println(newStr);
}
上述代码的输出是
Suneetha N.=9876543210, 9898989898: Patil,Pratish
我无法理解matcher.replaceAll("$4:$3,$1")
的用法及其工作原理并产生此输出。请提供您的建议。
答案 0 :(得分:3)
你有
"(\\w+)(\\s\\w+)(=)(\\d{10})"
正则表达式并想象它将为已创建的字符串创建一个GROUPS。在这个例子中它是
Pratish Patil=9898989898
这里是regex的小组:
(\\w+) => Pratish $1
(\\s\\w+) => Patil $2
(=) => = $3
(\\d{10}) => 9898989898 $4
然后你说你希望通过这个新的排序replaceAll
使用这个正则表达式,其中$ number定义了一个组。所以你要替换
Pratish Patil=9898989898
来自:
和,
的新群组订单。
$4:$2,$1 -> 9898989898:Patil,Pratish.
您没有使用$ 3组,其中=
。