java Matcher匹配头尾截取替换字符串的案例
在java编程中,我们常常有这样的需求:需要将一段字符串内的特定字符串,按照一定规则查找出来或替换,比如匹配文本开头规则和结束规则。
以下就是Matcher的使用:
importjava.util.ArrayList;
importjava.util.List;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*@Authorchangle
*@Time17/10/12.
*@Desc匹配头尾截取替换字符串
*待替换内容:
*url:jdbc:mysql://${cot.identity.db.ip}:3306/${cot.identity.db.dbname}?useUnicode=true&characterEncoding=UTF8
*替换后:
*url:jdbc:mysql://{{cot.identity.db.ip}}:3306/{{cot.identity.db.dbname}}?useUnicode=true&characterEncoding=UTF8
*/
publicclassCommonTest{
publicstaticvoidmain(String[]args){
Stringstr="url:jdbc:mysql://${cot.identity.db.ip}:3306/${cot.identity.db.dbname}?useUnicode=true&characterEncoding=UTF8";
if(str.contains("${cot.")){
Patternleftpattern=Pattern.compile("\\$\\{");
Matcherleftmatcher=leftpattern.matcher(str);
Patternrightpattern=Pattern.compile("}");
Matcherrightmatcher=rightpattern.matcher(str);
intbegin=0;
ListfoundKeys=newArrayList<>();
while(leftmatcher.find(begin)){
rightmatcher.find(leftmatcher.start());
StringconfigKey=str.substring(leftmatcher.start(),rightmatcher.end());
System.out.println(configKey.replace("${","{{"));
foundKeys.add(configKey);
begin=rightmatcher.end();
}
System.out.println("原内容:"+str);
for(Stringfoundkey:foundKeys){
str=str.replace(foundkey,foundkey.replace("${cot.","{{cot.").replace("}","}}").replace("-","_"));
}
System.out.println("替换后:"+str);
}
}
}
补充知识:JAVA正则表达式Pattern和Matcher,用正则替换对应的内容
需求:
过滤样式,比如:
铅笔机一个
过滤后结果=铅笔机一个
publicstaticvoidmain(String[]args){
StringskuName="铅笔机一个
";
//生成一个Pattern,同时编译一个正则表达式
Patternpattern=Pattern.compile("<(.[^>]*)>");
//匹配字符串
Matchermatcher=pattern.matcher(skuName);
//把符合正则的数据替换成""
skuName=matcher.replaceAll("");
System.out.println("替换以后结果=====》"+skuName);
}
输出结果:
替换以后结果=====》铅笔机一个
说明:
1.Pattern类用于创建一个正则表达式,也可以说创建一个匹配模式,它的构造方法是私有的,不可以直接创建,但可以通过Pattern.complie(Stringregex)简单工厂方法创建一个正则表达式。
2.Pattern.matcher(Stringregex,CharSequenceinput)是一个静态方法,用于快速匹配字符串,该方法适合用于只匹配一次,且匹配全部字符串。
以上这篇javaMatcher匹配头尾截取替换字符串的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。