【发布时间】:2017-06-05 01:01:26
【问题描述】:
这段代码应该将img src的值转换为本地路径。
var matches = Regex.Replace(html, "(<[ ]*img[^s]+src=[\"'])([^\"']*)([\"'][^/]*/>)",
(match)=> {
return string.Format("{0}{1}{2}",
match.Captures[0],
HostingEnvironment.MapPath("~/" + match.Captures[1]),
match.Captures[2]);
});
它正确匹配整个图像标签,但只有一个捕获。我认为括号分隔捕获,但它似乎并没有那样工作。
我应该如何写这个来获得三个捕获,中间一个是路径?
【问题讨论】:
-
你输入的字符串是什么?
-
同样不要使用 Regex 来解析 HTML
-
@Andrey 作为一般规则,我衷心同意。在这种情况下,我使用 HTML 作为模板标记,我通过 html 到 pdf 转换器填充。转换器的一个缺点是它不能解析资源,除非你指定一个绝对的本地文件系统路径。自动解析通过转换器填充 HTML 的代码中的网络相对路径意味着我可以拥有一个模板,该模板呈现为可供浏览器使用的网页以进行预览和测试。
标签: c# regex-group