2015-07-03 79 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