替换引号之间的一些特殊字符

时间:2017-03-21 10:03:19

标签: java regex quotes replaceall

我想在JSON字符串中替换点和单个撇号字符,即仅在引用时。使用此输入:

String json = "{\"someJsonMap\":{\"with.dot.s\":1.0,\"'with.dots'.and.apostroph's.\":20.001}}";

我想转此:

{"someJsonMap":{"with.dot.s":1.0,"with.dots'.and.apostroph's":20.001}}

进入这个:

{"someJsonMap":{"withdots":1.0,"withdotsandapostrophs":20.001}}

我感谢任何帮助,解决方案或解释。

1 个答案:

答案 0 :(得分:2)

如果从未有过转义引号,那么您可以使用前面的奇数引号。奇数表示您在引号内。

json = json.replaceAll("['.](?=(([^\"]*\"){2})*[^\"]*\"[^\"]*$)", "");

正则表达式的列车残骸断言,在引用*对的倍数(0-n通过([^\"]*\"){2})之后引用了奇数引号,剩余的字符只有一句[^\"]*\"[^\"]*$

如果转义引号,您基本上无法使用正则表达式。