当字段中存在逗号和括号时,从字符串中删除逗号,而不考虑括号内的逗号

时间:2015-09-18 08:06:51

标签: c# regex

我正在尝试在C#csv中使用可包含以下内容的正则表达式: 代码为

a,a,(a,b,(a)).

我尝试了以下内容:

var result = (from Match m in Regex.Matches(input, @"([^,()]+(\([^()]*\))?") select m.Value).ToArray();
string result1 = ConvertStringArrayToString(result);
textBox2.Text = result1;

但我输出如下:

a
a
a
b(a)

1 个答案:

答案 0 :(得分:0)

您需要balancing group definitions才能使其正常运行:

[^,()]*(?:\(([^()]*|(?<open>\()|(?<-open>\)))*(?(open)(?!))\))*[^,()]*

DEMO

对BGD的一个很好的介绍是herehere