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类型