1

我正在尝试正则表达式替换字符串中引号之间的所有逗号。我似乎无法让它以非贪婪的方式匹配它们,所以它不会只是正则表达式整行。我正在尝试的文本和正则表达式如下。使用我正在尝试的正则表达式,它正在拾取每个元素之间的逗号。EX "remove,comma","nocomma" 产生 "remove,comma" 和 "," 匹配。此外,它正在从“nocomma”、“nocomma”中选择“nocomma”、“nocomma”等匹配项。

我首先进行匹配,然后缩小范围以替换逗号。

使用 .NET 4.0

正则表达式之前的文本

"删除,逗号","删除,逗号","nocomma","删除,逗号","删除,全部,逗号,这里,太","也,删除,逗号"

正则表达式之前我想要的文本

"removecomma","re​​movecomma","nocomma","re​​movecomma","re​​moveallcommasheretoo","alsoremovecommas"

正则表达式

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

2 回答 2

1

这个怎么样:-

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

或者试试这个:-

string pattern = @"""[^""]*""";
data = Regex.Replace(data, pattern, m => m.Value.Replace(",", ""),
    RegexOptions.IgnorePatternWhitespace);
于 2013-09-24T18:03:02.317 回答
1
Regex.Replace(input,@",(?!([^""]*""[^""]*"")*[^""]*$)","");

上面的正则表达式,只有在它们的前面是奇数时才会替换。"这是因为,在里面""会有奇数的"前面。

[^"]*将匹配 0 到许多不是的字符"

$描述字符串的结尾

(?!)是负前瞻

于 2013-09-24T18:10:16.980 回答