我正在尝试正则表达式替换字符串中引号之间的所有逗号。我似乎无法以非贪婪的方式将它们全部匹配,因此它不仅仅是正则表达整个系列。我正在尝试的文本和正则表达式如下。我正在尝试使用正则表达式,它正在拾取每个元素之间的逗号。 EX“删除,逗号”,“nocomma”产生“删除,逗号”和“,”匹配。此外,它正在挑选像“nocomma”,“来自”nocomma“,”nocomma“这样的比赛。
我首先处理匹配,然后将其缩小到替换逗号。
使用.NET 4.0
正则表达式之前的文字
“删除,逗号”, “删除,逗号”, “nocomma”, “删除,逗号”, “删除,所有,逗号,在这里也”, “也,删除,逗号”
我希望在Regex之前使用的文字
“removecomma”, “removecomma”, “nocomma”, “removecomma”, “removeallcommasheretoo”, “alsoremovecommas”
REGEX
\".*?(,).*?\"
答案 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到多个不是[^"]*
"
描述了字符串
$
是一个负面的预测