2015-07-03 94 views
4

对不起这个问题,但我已经花了6个小时试图申请一个正则表达式。
解析一个社交网络时,我遇到了一些问题:某些昵称可能包含双引号(f.ex. John "Superstar" Smith),并且在尝试对这些字符串进行json处理时,我的应用程序失败。我这里还有我从网上看到验证错误:
enter image description here
所以,我怎么能代替2个双引号来1x大行情,其中前一个字是"nickname":如何应用此正则表达式?

我试过分组(?=“昵称”:)并寻找2个双引号(\“\”),但没有运气。

+2

这是一个[XY问题】(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。你是说你不能控制的API返回无效的JSON(非转义字符串),以至于无法将其转换为对象?或者你真的试图通过正则表达式来操纵JSON _仅仅解析它? – Mathletics

+0

@Mathletics,对不起,Engligh不是我的母语,所以我可能会误解你。该API返回给我2个双引号,因为这个人的昵称有它。为了进一步进一步,我需要jsonfy代码,这是我不能做的,没有将2个双引号替换为1x双引号 ---- 当我试图在python中输出jsonfy时,它会失败,并且出现'Expecting' ,'delimiter' – Groosha

回答

2

您可以使用以下正则表达式。

"{2}([^,}]+?)"{2} 

Regular expression visualization

Debuggex Demo

+0

哇!谢谢!我刚刚发现了一个新的解决方案,另一个是从另一个网站提出的(只是将它保存在历史中): '(?!nickname)“”[^ \ w \ s] *“”'和 '“” \ W *“”(?=,)' – Groosha

+0

@ Kondra007没问题。几个问题与其他解决方案... – phuzi

+0

'“”\ W *“”(?=,)'不匹配 - '\ W'匹配非单词字符和'(?=,)'只会匹配尾随逗号,并且如果昵称是对象的最后一个属性,就会跟着'}'来匹配。尽管可以将它改为'(?= [,}])。 – phuzi