2013-09-24 78 views
1

我试图用正则表达式替换字符串中引号之间的所有逗号。我似乎无法以非贪婪的方式将它们全部匹配起来,所以它不会只是将整条线路正确化。我正在尝试的文本和正则表达式如下。我正在尝试使用正则表达式,它正在拾取每个元素之间的逗号。 EX“删除,逗号”,“nocomma”产生“删除,逗号”和“”,匹配。此外,它是捡火柴一样“,从‘nocomma“nocomma”,’,‘nocomma’。表达式中的正则表达式逗号

我工作的匹配,然后再缩小它放下来替换逗号。

使用.NET 4.0

文本之前的正则表达式

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

TEXT I Want After Before Regex

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

正则表达式

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

回答

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

上述正则表达式将取代,仅当它们是奇数" ahead..This是因为内"",将有奇数领先"

[^"]*将匹配0到多个字符不属于"

$描述字符串

(?!)年底为负前瞻

+0

这将删除所有的佣金,包括我不想删除的佣金。我已经在上面更新了我想要的最终结果。 – steventnorris

+0

我看到你添加的解释,但是当我在myregextester中运行它时,它将删除所有包含我需要保留的逗号。 – steventnorris

+0

@steventnorris在Visual Studio中运行**不是**测试程序..它不会在其他测试程序中工作,因为它会尝试重新越过'''' – Anirudha

1

如何: -

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

或者试试这个: -

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

我myregextester.com尝试这一点,它没有取得任何火柴。 – steventnorris

+0

@steventnorris: - 现在希望它工作! –

+0

@steventnorris: - 更新了我的答案。请现在尝试!! 1 –