繁体   English   中英

Java Regex pattern.matcher理解

[英]Java Regex pattern.matcher Understanding

考虑以下代码

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})" 

正则表达式,并想象它将为已建立的字符串创建GROUPS。 在这个例子中是

Pratish Patil=9898989898 

这是正则表达式的分组:

(\\w+) => Pratish        $1
(\\s\\w+) => Patil       $2
(=) => =                 $3
(\\d{10}) => 9898989898  $4

然后,您说要用此正则表达式通过此新顺序替换replaceAll ,其中$ number定义了一个组。 所以你更换

Pratish Patil=9898989898 

按照新的分组顺序:,

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM