正则表达式删除单词周围的一对双引号,但不删除双引号的单个实例
Regex Remove pair of double quotes around word, but not single instances of double quotes
我需要能够删除单词周围的一对双引号,而不删除单个双引号实例。
即。在下面的示例中,正则表达式应该只匹配 "hello" 和 "bounce",而不删除单词本身。
3.5" 硬盘
"hello"
“酷
"bounce"
单句不带引号。
到目前为止我发现的最接近的正则表达式是下面这个,但这突出显示了整个 "bounce" 词,这是不可接受的,因为我需要保留这个词。
"([^\"]|\")*"
我在研究中发现的其他接近正则表达式:
1.
\"*\"
但这突出显示了单引号。
和Unsuccessful Method 2
这需要在 C# 代码中可用。
我一直在使用 RegexStorm 来测试我的正则表达式:http://regexstorm.net/reference
您的第一个正则表达式似乎不错,但缺少外部捕获组。如果我们将其转换为线性正则表达式会更好,避免交替。
"([^\"\r\n]*(?:\.[^\"\r\n]*)*)"
我在字符 class 中加入了回车符 return \r
和 \n
以防止正则表达式在正则表达式中超过一行,但是您可能不需要它们。然后用 </code> 替换整个匹配项(对第一个捕获组保存数据的反向引用)。要在 C# 中转义 <code>"
,请使用双引号 ""
.
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, @""));
我需要能够删除单词周围的一对双引号,而不删除单个双引号实例。
即。在下面的示例中,正则表达式应该只匹配 "hello" 和 "bounce",而不删除单词本身。
3.5" 硬盘
"hello"
“酷
"bounce"
单句不带引号。
到目前为止我发现的最接近的正则表达式是下面这个,但这突出显示了整个 "bounce" 词,这是不可接受的,因为我需要保留这个词。
"([^\"]|\")*"
我在研究中发现的其他接近正则表达式:
1.
\"*\"
但这突出显示了单引号。
和Unsuccessful Method 2
这需要在 C# 代码中可用。
我一直在使用 RegexStorm 来测试我的正则表达式:http://regexstorm.net/reference
您的第一个正则表达式似乎不错,但缺少外部捕获组。如果我们将其转换为线性正则表达式会更好,避免交替。
"([^\"\r\n]*(?:\.[^\"\r\n]*)*)"
我在字符 class 中加入了回车符 return \r
和 \n
以防止正则表达式在正则表达式中超过一行,但是您可能不需要它们。然后用 </code> 替换整个匹配项(对第一个捕获组保存数据的反向引用)。要在 C# 中转义 <code>"
,请使用双引号 ""
.
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, @""));