我想替换 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}}
感谢任何帮助、解决方案或解释。
最佳答案
如果从来没有转义引号,那么您可以使用前瞻来查找后面的奇数个引号。奇数表示您在引号内。
json = json.replaceAll("['.](?=(([^\"]*\"){2})*[^\"]*\"[^\"]*$)", "");
那个正则表达式的残骸断言,通过消耗多个(0-n,通过*
)引号对([^\"]*\",后面有奇数个引号){2}
其余字符只有一个引号 [^\"]*\"[^\"]*$
如果存在转义引号,则基本上无法使用正则表达式。
关于java - 替换引号之间的一些特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923823/