正则表达式替换C#中的双嵌套引号

时间:2014-08-15 09:39:57

标签: c# regex

我正在尝试使用Regex从C#中的字符串替换双嵌套引号,但到目前为止还无法实现。下面是示例文本和我尝试的代码 -

string html = "<img src=\"imagename=\"g1\"\" alt = \"\">";
string output = string.Empty;
Regex reg = new Regex(@"([^\^,\r\n])""""+(?=[^$,\r\n])", RegexOptions.Multiline); 
output = reg.Replace(html, @"$1");

以上给出了以下输出 -

"<img src="imagename="g1 alt = >"

我正在寻找的实际输出是 -

"<img src="imagename=g1" alt = "">"

请建议如何更正上述代码。

1 个答案:

答案 0 :(得分:2)

模式:\s*"\s*([^ "]+)"\s*(?=[">])|(?<=")("")(?=")

替换:$1

以下是demo并在regexstorm

进行了测试

程序中使用的字符串文字:

@"\s*""\s*([^ ""]+)""\s*(?=["">])|(?<="")("""")(?="")"

为了保持简单和更精确,直接关注src属性值

模式:(\bsrc="[^ =]+=)"([^ "]+")"

替换:$1$2

以下是online demo并在regexstorm

进行了测试

程序中使用的字符串文字:

@"(\bsrc=""[^ =]+=)""([^ ""]+"")"""

注意:我假设属性值不包含任何空格。