我的json文件的值部分有一些未转义的引号,
"key":"value"
就像
"text":"a personal persona as a street-smart "tough girl", which when
combined with raw talent","birthday":"19871108"
我想知道如何使用正则表达式来逃避我的价值部分内的报价? 使它看起来像
"text":"a personal persona as a street-smart \"tough girl\", which when
combined with raw talent","birthday":"19871108"
答案 0 :(得分:0)
棘手的部分不是使用正则表达式查找引号,而是使用正则表达式查找未转义引号。
未转义的引号的定义是前面有偶数个反斜杠的定义(零反斜杠是最常见的情况)。
这个表达式就是这个丑陋的东西:
(?<!(?:[^\\]|$)(?:\\{2})?\\)"
如果您认为不好,请查看Java中的转义版本:
(?<!(?:[^\\\\]|$)(?:\\\\{2})?\\\\)\"
这基本上做的是找到尚未被转义的所有报价。我使用的测试字符串是:Testing "unescaped". \"escaped\". \\"unescaped again\\"
正则表达式只匹配第一组和第三组引号,而不是转义的第二组。
应该用\"
或java,\\\"
替换。
试一试,让我知道!