正则表达式逗号表达式

时间:2013-09-24 17:59:31

标签: .net regex csv comma

我正在尝试正则表达式替换字符串中引号之间的所有逗号。我似乎无法以非贪婪的方式将它们全部匹配,因此它不仅仅是正则表达整个系列。我正在尝试的文本和正则表达式如下。我正在尝试使用正则表达式,它正在拾取每个元素之间的逗号。 EX“删除,逗号”,“nocomma”产生“删除,逗号”和“,”匹配。此外,它正在挑选像“nocomma”,“来自”nocomma“,”nocomma“这样的比赛。

我首先处理匹配,然后将其缩小到替换逗号。

使用.NET 4.0

正则表达式之前的文字

“删除,逗号”, “删除,逗号”, “nocomma”, “删除,逗号”, “删除,所有,逗号,在这里也”, “也,删除,逗号”

我希望在Regex之前使用的文字

“removecomma”, “removecomma”, “nocomma”, “removecomma”, “removeallcommasheretoo”, “alsoremovecommas”

REGEX

\".*?(,).*?\"

2 个答案:

答案 0 :(得分:1)

这个怎么样: -

Regex.Replace(input,@",(?![^""]*""(?:[^""]*""[^""]*"")*[^""]*$)",String.Empty);

或试试这个: -

string pattern = @"""[^""]*""";
data = Regex.Replace(data, pattern, m => m.Value.Replace(",", ""),
    RegexOptions.IgnorePatternWhitespace);

答案 1 :(得分:1)

Regex.Replace(input,@",(?!([^""]*""[^""]*"")*[^""]*$)","");

上述正则表达式只有在前面有,奇数时才会替换"。这是因为,""的奇数{{1}提前。

"会匹配0到多个不是[^"]*

的字符

"描述了字符串

的结尾

$是一个负面的预测