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

看板RegExp (正規表示式 Regular Expression)作者 (經濟不景氣,好景不常在)時間7年前 (2017/04/25 22:01), 編輯推噓3(304)
留言7則, 3人參與, 最新討論串1/1
我想要設定一個動態的格式(字串),使用者再傳入參數時,能夠動態增加.. 因此,我定義傳入的格式如下: [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

04/25 22:17, , 1F
你可能要考慮改一下傳入格式, 不然除非你保證所有 Value
04/25 22:17, 1F

04/25 22:18, , 2F
都會 [] 成對那還有辦法, 否則無解
04/25 22:18, 2F

04/25 22:18, , 3F
改傳入格式有兩個方向: 一是分隔符號換成保證不在 Value
04/25 22:18, 3F

04/25 22:19, , 4F
裡出現的字, 另一是定義跳脫字串給 Value 使用
04/25 22:19, 4F

04/26 11:04, , 5F
覺得這不是用 regex 可以處理的工作
04/26 11:04, 5F

04/26 11:04, , 6F
regex 遇到 recursive 的東西都很難處理
04/26 11:04, 6F

04/29 18:37, , 7F
/\[(.+?)=(.*?)\](?=\[|$)/g
04/29 18:37, 7F
文章代碼(AID): #1O_rRK0H (RegExp)
文章代碼(AID): #1O_rRK0H (RegExp)