[问题] 字串透过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