java正则如何替换掉两个分号中间的逗号?

ID:u0112200 2018-11-13 08:45:01
原始字符串如下:
String jsonStr = "[{param1='2018息,科008,业,测部', param2='20189-2', param3='重复', demandNo='2018044'}]";
想替换结果为:
jsonStr = "[{param1='2018息.科008.业.测部', param2='20189-2', param3='重复', demandNo='2018044'}]";

也就是只替换两个单引号中间的逗号。详见:param1='2018息,科008,业,测部' 更改为[{param1='2018息.科008.业.测部'这个样子额。
而【param2='20189-2', param3='重复',】 这中间的逗号不替换。

最好是正则表达式的处理。
...全文
416 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
解法2:

Matcher m=Pattern.compile("'[^']+'").matcher(str);
StringBuffer result=new StringBuffer();
while(m.find()){
m.appendReplacement(result, m.group().contains(",")?m.group().replaceAll(",", "."):"$0");
}
m.appendTail(result);
  • 打赏
  • 举报
回复
解法1:

str.replaceAll("(?<==\\s?'|[^']),(?=[^']*')",".");
hattah 2018-11-15
  • 打赏
  • 举报
回复
补充下:

String jsonStr = "[{param1='2018息,科008,业,测部', param2='20189-2', param3='重复', demandNo='2018044'}]";
StringBuilder sbuf = new StringBuilder();
Pattern p= Pattern.compile("('[^']*')");
Matcher m=p.matcher(jsonStr);
int index = 0;
while (m.find()) {
sbuf.append(jsonStr.substring(index, m.start()));
sbuf.append(m.group(1).replaceAll(",", "."));
index = m.end();
}
sbuf.append(jsonStr.substring(index));
System.out.println(sbuf.toString());
hattah 2018-11-15
  • 打赏
  • 举报
回复
String jsonStr = "[{param1='2018息,科008,业,测部', param2='20189-2', param3='重复', demandNo='2018044'}]";
StringBuilder sbuf = new StringBuilder();
Pattern p= Pattern.compile("('[^']*')");
Matcher m=p.matcher(jsonStr);
int index = 0;
while (m.find()) {
sbuf.append(jsonStr.substring(index, m.start()));
sbuf.append(m.group(1).replaceAll(",", "."));
index = m.end();
}
前言:本资源来自于javaeye,原资源链接地址:http://www.javaeye.com/topic/67398 原文如下: 以前写了一个java的正规表达式的java工具类,分享一下,有用到的欢迎下载使用。 如果你有常用的定义好的,且测试通过的正规表达式,欢迎跟贴,也让我享用一下 . 类中用到了 jakarta-oro-2.0.jar 包,请大家自己在 apache网站下下载 在这是junit测试单元类我就不提交了,在main()方法中有几个小测试,有兴趣自己玩吧. 这个工具类目前主要有25种正规表达式(有些不常用,但那时才仔细深入的研究了一下正规,写上瘾了,就当时能想到的都写了): 1.匹配图象; 2 匹配email地址; 3 匹配匹配并提取url ; 4 匹配并提取http ; 5.匹配日期 6 匹配电话; 7 匹配身份证 8 匹配邮编代码 9. 不包括特殊字符的匹配 (字符串中不包括符号 数学次方号^ 单引号' 双引号" 分号; 逗号, 帽号: 数学减号- 右尖括号> 左尖括号 0) 12 匹配正整数 13 匹配非正整数(负整数 + 0) 14 匹配负整数; 15. 匹配整数 ; 16 匹配非负浮点数(正浮点数 + 0) 17. 匹配正浮点数 18 匹配非正浮点数(负浮点数 + 0) 19 匹配负浮点数; 20 .匹配浮点数; 21. 匹配由26个英文字母组成的字符串; 22. 匹配由26个英文字母的大写组成的字符串 23 匹配由26个英文字母的小写组成的字符串 24 匹配由数字和26个英文字母组成的字符串; 25 匹配由数字、26个英文字母或者下划线组成的字符串; java源码: /* * Created on 2005-4-15 * * Summary of regular-expression constructs 正则表达式结构简介: * Construct Matches * Characters 字符: * x The character x x 字符 x * \\ The backslash character \\ 反斜杠 * \0n The character with octal value 0n (0 <= n <= 7) \0n 十进制数 (0 <= n <= 7) * \0nn The character with octal value 0nn (0 <= n <= 7) \0nn 十进制数 0nn (0 <= n <= 7) * \0mnn The character with octal value 0mnn (0 <= m <= 3, 0 <= n <= 7) \0mnn 十进制数 0mnn (0 <= m <= 3, 0 <= n <= 7) * \xhh The character with hexadecimal value 0xhh \xhh 十六进制数 0x

50,523

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧