1

我需要解析以下字符串

/MyData.csv(MemberCount.sum,Production.sum[Salesperson="James Almond","Area="Europe "Area 1" (Germany)",Area="North America",Area="North America [Level A]"])

第一部分很简单,但是括号 ([]) 中的子句让我有点头疼,因为它可以包含双引号,如示例所示。(注意括号内的内容可以动态变化)

解析字符串的最后一部分时,我希望得到以下输出:

销售员 James Almond 区域欧洲“区域 1”(德国)区域北美区域北美 [A 级]

我一直在使用正则表达式,但似乎无法正确处理。希望有人有魔力!

4

2 回答 2

1

您可以使用“真”右双引号后跟逗号或右方括号的事实:

Area="(?<Area>.*?)"(?=\]|,)

正则表达式 101 演示

于 2013-08-26T12:32:22.320 回答
0

您可以尝试平衡组定义

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]"
于 2013-08-26T12:48:58.577 回答