我需要一个正则表达式来对像下面这样的字符串运行,它会在特定条件下将绝对路径转换为相对路径。
<p>This website is <strong>really great</strong> and people love it <img alt="" src="http://localhost:1379/Content/js/fckeditor/editor/images/smiley/msn/teeth_smile.gif" /></p>
规则:
如果url包含“/Content/”我 想获取相对路径
如果url不包含 “/Content/”,它是一个外部文件, 并且绝对路径应该保留
不幸的是,Regex 不是我的强项,这对我来说太高级了。如果有人可以提供一些提示,我将不胜感激。
提前致谢。
更新: 回答评论中的问题:
- 在应用正则表达式时,所有 url 都将以“http://”开头
- 这应该应用于 img 和 a 标签的 src 属性,而不是标签外的文本。
最佳答案
您应该考虑使用 Uri.MakeRelativeUri method - 您当前的算法依赖于路径中不包含“/Content/”的外部文件,这对我来说似乎有风险。 MakeRelativeUri 将确定是否可以创建从当前 Uri 到 src
或 href
的相对路径,而不管您或外部文件存储在路上所做的更改。
关于c# - 正则表达式:相对 URL 的绝对 URL (C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2471938/