java中怎么用正则表达式删除中括号里面的逗号
展开全部
一次替换完好像不行,可以分多次替换
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
Pattern compile = Pattern.compile("(\\[.*?)[,,]+(.*?\\])");
String str = "这是[你,好,啊,测试一下,,]再来一次[你,好测,,试一下]";
System.out.println("原字符串:" + str);
while (compile.matcher(str).find()) {
str = compile.matcher(str).replaceAll("$1$2");
}
// 这是[你好啊测试一下]再来一次[你好测试一下]
System.out.println("替 换 后:" + str);
}
}
追问
我直接用replaceAll的话直接把中括号一起删掉了有什么办法吗
展开全部
/**
* 删除中括号中的逗号
* @param str 字符串
* @param start 开始匹配的位置
* @return 结果
*/
public static String delDotInBracket(String str, int start) {
String regex = "(\\[|\\]).*?((,|,).*?)*?(\\[|\\])";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(str);
if(!matcher.find(start)) {
return str;
}
String val = matcher.group(0);
int end = matcher.end();
System.out.println(String.format("位置: %d - %d, 匹配到的字符串: %s", matcher.start(), end, val));
if(end < str.length()) {
str = delDotInBracket(str, end - 1);
}
return str.replace(val, val.replaceAll(",|,", ""));
}
public static void main(String[] args) {
String str = "mnk, [0,13[,abc],xyz[a,d]],31";
System.out.println("结果: " + delDotInBracket(str, 0));
}
/*
位置: 5 - 11, 匹配到的字符串: [0,13[
位置: 10 - 16, 匹配到的字符串: [,abc]
位置: 15 - 21, 匹配到的字符串: ],xyz[
位置: 20 - 25, 匹配到的字符串: [a,d]
位置: 24 - 26, 匹配到的字符串: ]]
结果: mnk, [013[abc]xyz[ad]],31
*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询