我需要解析以下字符串
/MyData.csv(MemberCount.sum,Production.sum[Salesperson="James Almond","Area="Europe "Area 1" (Germany)",Area="North America",Area="North America [Level A]"])
第一部分很简单,但括号([])中的条款让我有点头疼,因为它可以包含双引号,如示例所示。 (注意括号内的内容可以动态更改)
在解析字符串的最后一部分时,我希望得到以下输出:
销售人员 詹姆斯杏仁 区域 欧洲“1区”(德国) 区域 北美 区域 北美[A级]
我一直在使用正则表达式,但似乎无法做到正确。希望有人有魔力!
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以尝试Balancing Group Definitions:
string pattern = @"^[^\[\]]*" +
@"(" +
@"((?'Open'\[)[^\[\]]*)+" +
@"((?'Close-Open'\])[^\[\]]*)+" +
@")*" +
@"(?(Open)(?!))$";
var results =
Regex.Match(input, pattern)
.Groups["Close"].Value
.Split(new char[] { '=', ',' });
输出:
Salesperson
"James Almond"
Area
"Europe "Area 1" (Germany)"
Area
"North America"
Area
"North America [Level A]"