作者KSmart (經濟不景氣,好景不常在)
看板RegExp
標題[問題] 字串透過Regex Parse...
時間Tue Apr 25 22:01:53 2017
我想要設定一個動態的格式(字串),使用者再傳入參數時,能夠動態增加..
因此,我定義傳入的格式如下:
[Customer=AAA][Phone=09123456789]
or
[Customer=AAA][Phone=09123456789][Name=Jonh]
or
[Customer=AAA][Phone=09123456789][Name=Jonh][Sex=Boy]
我希望Parse後,塞入C#的Dictionary,因此定義成[Key1=Value1][Key2=Value2][][]..
目前我可以Parse且塞入Dictionary。
Regex \[(?<Key>.+?)=(?<Value>.*?)\]
但是,遇到一個問題..
如果傳入的Value有[],則會Fail..
[Customer=AAA][Phone=09123456789][ProgramName=AAA[1.0.2.5]][Name=John]
請問有有甚麼方式可以解決呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.74.165
※ 文章網址: https://www.ptt.cc/bbs/RegExp/M.1493128916.A.011.html
推 LPH66: 你可能要考慮改一下傳入格式, 不然除非你保證所有 Value 04/25 22:17
→ LPH66: 都會 [] 成對那還有辦法, 否則無解 04/25 22:18
→ LPH66: 改傳入格式有兩個方向: 一是分隔符號換成保證不在 Value 04/25 22:18
→ LPH66: 裡出現的字, 另一是定義跳脫字串給 Value 使用 04/25 22:19
推 mars90226: 覺得這不是用 regex 可以處理的工作 04/26 11:04
→ mars90226: regex 遇到 recursive 的東西都很難處理 04/26 11:04
推 No: /\[(.+?)=(.*?)\](?=\[|$)/g 04/29 18:37