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

标签 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}}

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

最佳答案

如果从来没有转义引号,那么您可以使用前瞻来查找后面的奇数个引号。奇数表示您在引号内。

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

那个正则表达式的残骸断言,通过消耗多个(0-n,通过*)引号对([^\"]*\",后面有奇数个引号){2} 其余字符只有一个引号 [^\"]*\"[^\"]*$

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

关于java - 替换引号之间的一些特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42923823/

相关文章:

javascript - 用于验证信用卡对账单的对账单描述符的正则表达式

java - 如何正则表达式匹配排除某些字符?

java - 如何使用带有 json 的 Map 从数据库设置 map latlng 值?

java - ANT_HOME 设置正确但无法运行 ant

java - Grails在同一域类中具有hasOne属性

regex - 在 Mechanize 函数中使用哪个正则表达式标签?

regex - Hive RegexSerDe多行日志匹配

用于匹配带转义引号的引号字符串的 Java 正则表达式

javascript - 替换 JavaScript 中的符号

mysql - 何时在 MySQL 中使用单引号、双引号和反引号