我正在尝试使用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 = "">"
请建议如何更正上述代码。
答案 0 :(得分:2)
模式:\s*"\s*([^ "]+)"\s*(?=[">])|(?<=")("")(?=")
替换:$1
以下是demo并在regexstorm
进行了测试程序中使用的字符串文字:
@"\s*""\s*([^ ""]+)""\s*(?=["">])|(?<="")("""")(?="")"
为了保持简单和更精确,直接关注src
属性值
模式:(\bsrc="[^ =]+=)"([^ "]+")"
替换:$1$2
程序中使用的字符串文字:
@"(\bsrc=""[^ =]+=)""([^ ""]+"")"""
注意:我假设属性值不包含任何空格。