我花了一個多小時搞亂了正則表達式模式,以便在一個複雜的字符串上運行正確的find-and-replace
。Tricky正則表達式解析關鍵值對
我需要一個字符串轉換是這樣的:
foo a='b' c="d and e" wombat=true a fizz='buzz' "hello='goodbye'"
和規範它轉換成:
foo "a='b'" "c='d and e'" "wombat='true'" a "fizz='buzz'" "hello='goodbye'"
本質:
每
key/value
對應該被包裹在雙引號,用單引號括起來,不管它們是如何包裝的即爲了將「包含」爲一個值,多空格值必須先包裝在單引號或雙引號中。
到目前爲止我用正則表達式玩的順序:
str = str.replace(/([a-zA-Z0-9]*)=("(.*?)"|'(.*?)')/g, '"$1=\'$2\'');
然而,這有一噸的問題。
是否有任何單一替代解決方案呢?
爲什麼會'了''之後TRUE',前'fizz'不被認爲是'foo a ='b'c =「d和e」的值wombat = true a fizz ='buzz'「hello ='goodbye'」'? – guest271314
@ guest271314「爲了將」包含「爲一個值,多空格值必須先用單引號或雙引號括起來。」 – dthree