项目中需要这样二种场景,需要贪婪匹配一个字符串,按照相应的匹配规则,替换指定的字符。
一、场景一匹配规则
1.中括号开头紧接2位数字
2.中间部分任意
3.右中括号结尾
代码如下:
String str = "[05经销商风险等级:低风险][06客户户籍地风险等级:中高风险][06销售风险等级:中风险][01不符合增信退回要求][02人行与申请提供手机号码不一致]";
//正则
Pattern pattern=Pattern.compile("\\[\\d{2}.*?\\]");
Matcher matcher = pattern.matcher(str);
StringBuffer stringBuffer = new StringBuffer(512);
while (matcher.find()) {
StringBuilder sb = new StringBuilder(matcher.group(0));
System.out.println(matcher.group());
if (StringUtils.isBlank(sb) || sb.length() <= 2) {
continue;
}
//替换第2,3位为空
sb.replace(1, 3, "");
System.out.println(sb.toString());
}
输出结果:
[05经销商风险等级:低风险]
[经销商风险等级:低风险]
[06客户户籍地风险等级:中高风险]
[客户户籍地风险等级:中高风险]
[06销售风险等级:中风险]
[销售风险等级:中风险]
[01不符合增信退回要求]
[不符合增信退回要求]
[02人行与申请提供手机号码不一致]
[人行与申请提供手机号码不一致]
二、场景二匹配规则
1.匹配()中的内容
代码如下:
//正则
Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");
matcher = pattern.matcher("06客户户籍地风险等级(低风险)师12(中高风险)(人行与申请提供手机号码不一致)风险(中风险)01不符合增信退回要求(不符合增信退回要求)01不符合增信退回要求");
while(matcher.find())
System.out.println(matcher.group());
输出结果:
低风险
中高风险
人行与申请提供手机号码不一致
中风险
不符合增信退回要求
版权声明:本文为qq_21480329原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。