作者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://webptt.com/cn.aspx?n=bbs/RegExp/M.1493128916.A.011.html
1F:推 LPH66: 你可能要考虑改一下传入格式, 不然除非你保证所有 Value 04/25 22:17
2F:→ LPH66: 都会 [] 成对那还有办法, 否则无解 04/25 22:18
3F:→ LPH66: 改传入格式有两个方向: 一是分隔符号换成保证不在 Value 04/25 22:18
4F:→ LPH66: 里出现的字, 另一是定义跳脱字串给 Value 使用 04/25 22:19
5F:推 mars90226: 觉得这不是用 regex 可以处理的工作 04/26 11:04
6F:→ mars90226: regex 遇到 recursive 的东西都很难处理 04/26 11:04
7F:推 No: /\[(.+?)=(.*?)\](?=\[|$)/g 04/29 18:37