Java Regex pattern.matcher理解

Java Regex pattern.matcher理解,java,Java,考虑以下代码 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.matche

考虑以下代码

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)的用途以及它是如何工作和产生这个输出的。请提供您的建议。

您有

"(\\w+)(\\s\\w+)(=)(\\d{10})" 
并设想它将为创建的字符串创建一个组。在这个例子中,它是

Pratish Patil=9898989898 
以下是regex的分组:

(\\w+) => Pratish        $1
(\\s\\w+) => Patil       $2
(=) => =                 $3
(\\d{10}) => 9898989898  $4
然后,您说您想通过$number定义组的新顺序,用这个正则表达式替换所有的。所以你要替换

Pratish Patil=9898989898 
通过使用
的新组订单

$4:$2,$1 -> 9898989898:Patil,Pratish. 

您没有使用$3组,其中是
=

$1、$2、$4请参阅正则表达式中的括号。请勿滥用格式谢谢您的建议和回复。