我需要能够删除单词,旁边的双引号,而不删除双引号的单个实例。
IE中。在下面的例子中,正则表达式只应匹配"你好"并且"弹跳",而不删除单词本身。
3.5" HDD
"你好"
"凉爽
"弹跳"
没有引号的单句。
到目前为止我发现的最近的正则表达式是下面这个,但这突出了整个"反弹"这个词是不可接受的,因为我需要保留这个词。
"([^\\"]|\\")*"
我在研究中找到的其他密切正则表达式:
1
\"*\"
但这突出了单引号。
这需要在C#代码中使用。
我一直在使用RegexStorm来测试我的正则表达式:http://regexstorm.net/reference
答案 0 :(得分:2)
你的第一个正则表达式看起来很好,但缺少一个外部捕获组。如果我们将其转换为线性正则表达式,避免交替会更好。
"([^\\"\r\n]*(?:\\.[^\\"\r\n]*)*)"
我在字符类中包含回车\r
和\n
以防止正则表达式在正则表达式中超过一行,但您可能不需要它们。然后用$1
替换整个匹配(对第一个捕获组保存数据的反向引用)。要在C#中转义"
,请使用双引号""
。
C#代码:
string pattern = @"""([^\\""\r\n]*(?:\\.[^\\""\r\n]*)*)""";
string input = @"3.5"" hdd
""hello""
""cool
""bounce""
single sentence with out quotes.";
Regex regex = new Regex(pattern);
Console.WriteLine(regex.Replace(input, @"$1"));