2017-06-05 48 views
0

我有一些转义报价在我的JSON文件的值部分,Java的如何忽略引号内的行情

"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" 
+1

在正则表达式中使用'\\\“' – SHG

+0

@SHG我认为你的意思是'\”'。 '\\\“'被注册为'\'',并且提供了不必要的麻烦。 –

+0

我还不确定要在我的正则表达式中放置什么,“是否意味着匹配”? –

回答

0

使用正则表达式棘手的部分是没有找到报价,但要找到使用正则表达式转义报价。

未转义报价的定义是在偶数个反斜杠(最常见情况下为零反斜杠)之前定义的。

的表达式是这个丑陋的东西:

(?<!(?:[^\\]|$)(?:\\{2})?\\)" 

如果你认为这是不好的,请在Java中的转义版本:

(?<!(?:[^\\\\]|$)(?:\\\\{2})?\\\\)\" 

这本质上做的是找到所有的报价是还没有逃脱。我使用的测试字符串是:Testing "unescaped". \"escaped\". \\"unescaped again\\"正则表达式仅匹配第一组和第三组引号,而不匹配第二组。

它应该被替换为\"或java,\\\"

试试吧,让我知道!