我有一个看起来像APP1_ENV1,ENV2,ENV3,APP2_ENV4,ENV5,APP3_ENV1的字符串。
示例输出-APP1 [ENV1,ENV2,ENV3],APP2 [ENV4,ENV5],APP3 [ENV1]

最佳答案

我想你想要类似的东西

input.replace(/([^,_]+)_((?:[^,_]+,)*?[^,_]+)(?=$|,[^,_]+_)/g, "$1[$2]")




APP1_ENV1,ENV2,ENV3,APP2_ENV4,ENV5,APP3_ENV1
=> APP1[ENV1,ENV2,ENV3],APP2[ENV4,ENV5],APP3[ENV1]
APP1_ENV1,ENV2,ENV3,TREND2_ENV4,ENV5,JADE3_ENV1
=> APP1[ENV1,ENV2,ENV3],TREND2[ENV4,ENV5],JADE3[ENV1]


对于实际的解析,我建议

input.split(/,(?=[^,_]+_)/g).reduce(function(o, str) {
    var parts = str.split("_");
    o[parts[0]] = parts[1].split(",");
    return o;
}, {});




APP1_ENV1,ENV2,ENV3,APP2_ENV4,ENV5,APP3_ENV1
=> {"APP1":["ENV1","ENV2","ENV3"],"APP2":["ENV4","ENV5"],"APP3":["ENV1"]}
APP1_ENV1,ENV2,ENV3,TREND2_ENV4,ENV5,JADE3_ENV1
=> {"APP1":["ENV1","ENV2","ENV3"],"TREND2":["ENV4","ENV5"],"JADE3":["ENV1"]}

08-08 04:51