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

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