[問題] 字串透過Regex Parse...

作者: KSmart (經濟不景氣,好景不常在)   2017-04-25 22:01:53
我想要設定一個動態的格式(字串),使用者再傳入參數時,能夠動態增加..
因此,我定義傳入的格式如下:
[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]
請問有有甚麼方式可以解決呢?
作者: LPH66 (-6.2598534e+18f)   2017-04-25 22:17:00
你可能要考慮改一下傳入格式, 不然除非你保證所有 Value都會 [] 成對那還有辦法, 否則無解改傳入格式有兩個方向: 一是分隔符號換成保證不在 Value裡出現的字, 另一是定義跳脫字串給 Value 使用
作者: mars90226 (火星人)   2017-04-26 11:04:00
覺得這不是用 regex 可以處理的工作regex 遇到 recursive 的東西都很難處理
作者: No (you stay there)   2017-04-29 18:37:00
/\[(.+?)=(.*?)\](?=\[|$)/g

Links booklink

Contact Us: admin [ a t ] ucptt.com