当前位置: 首页 > 后端技术 > Java

java实现正则匹配产生多个结果,处理后批量替换的功能(即php的preg_replace_callback函数)

时间:2023-04-02 01:56:42 Java

要求:

小明小红张三
加工成:

小明

小红

张三

这个需求在抓取网页和处理结果的时候经常遇到。·PHP处理方法:小明小红张三
";functionmatchname($m){//处理每个匹配的结果return"

".$m[1]."

";}$res=preg_replace_callback("|(.*?)<\/name>|","匹配名",$str);变量转储($res);PHP的处理方法不用解释,一个preg_replace_callback函数就可以了。·java的处理方法importjava.util.function.Function;importjava.util.regex.MatchResult;importjava.util.regex.Matcher;importjava.util.regex.Pattern;publicclassTest{publicstaticvoidmain(String[]args){Stringstr="
"+"\t小明\n"+"\t小红\n"+"\t张三\n"+"\t
";Stringres=Test.preg_replace_callback(Pattern.compile("(.*?)"),(MatchResults)->"

"+s.group(1)+"

",海峡);System.out.println(res);}//java版preg_replace_callback方法实现publicstaticStringpreg_replace_callback(Patternpattern,FunctioncallbackFunc,CharSequencesubject){匹配器matchRes=模式。匹配器(主题);StringBufferresString=newStringBuffer();while(matchRes.find()){matchRes.appendReplacement(resString,callbackFunc.apply(matchRes.toMatchResult()));}匹配结果。附加尾部(resString);返回resString.toString();}}解释://1.FunctioncallbackFuncFunction该类型表示一个函数,其输入为MatchResult,输出为String//2.(MatchResults)->"

"+s.group(1)+"

"这是一个匿名函数,也可以写成(MatchResults)->{return"

"+s.group(1)+"

"}//3.callbackFunc.apply(matchRes.toMatchResult())apply是使用/应用这个匿名函数,入参为MatchResult类型