我需要一个正则表达式,通过查看逗号来替换字符串
例如字符串:
str1 = "a,b,12,func(a,b),8,bob,func(1,2))"
应转换如下:
str1_transformed = "a;b;12;func(a,b);8;bob;func(1,2))"
我无法用“;”代替每一个“,”因为它看起来像:
str1_wrong = "a;b;12;func(a;b);8;bob;func(1;2))"
我该如何处理?
我看了下面的线程没有成功:
How can I Split(',') a string while ignore commas in between quotes?
Regular Expression for Comma Based Splitting Ignoring Commas inside Quotes
答案 0 :(得分:3)
如果你知道你不会在下面使用不平衡或转义括号,那么regex运行良好:
,(?![^()]*\))
故障:
,
匹配逗号(?!
开始否定前瞻
[^()]*\)
这意味着,最近匹配的逗号不应该在没有匹配左括号的情况下关闭括号)
前瞻结束C#代码:
Regex regex = new Regex(@",(?![^()]*\))");
string result = regex.Replace(@"a,b,12,func(a,b),8,bob,func(1,2))", @";");