我必须用我预先定义的链接替换特定的链接。
string content = @"<html>"
+" <a href='http://www.yourdomain.com' style='width:10px;'>Click Here</a>"
+" <br>"
+" <a href='http://www.yourdomain.com/products/list.aspx' style='width:10px;'>Click Here</a>"
+" </html>";
要像这样被替换===&gt; "http://www.yourdomain.com"
至"http://www.mydomain.com"
但我不想要以"http://www.yourdomain.com"
开头的其他链接被替换。如果这些链接具有子链接(即"/products/list.aspx"
)。
所以我首先使用C#string.Replace()
函数。
string result = content.Replace("http://www.yourdomain.com", "http://www.mydomain.com");
我也尝试Regex.Replace()
功能。
string pattern = @"\bhttp://www.yourdomain.com\b";
string replace = "http://www.mydomain.com";
string result = Regex.Replace(content, pattern, replace);
但我得到了同样的结果。如下。
<html>
<a href='http://www.mydomain.com' style='width:10px;'>Click Here</a>
<br>
<a href='http://www.mydomain.com/products/list.aspx' style='width:10px;'>Click Here</a>
</html>
我想要的是如下。
<html>
<a href='http://www.mydomain.com' style='width:10px;'>Click Here</a>
<br>
<a href='http://www.yourdomain.com/products/list.aspx' style='width:10px;'>Click Here</a>
</html>
根据@Robin的建议,我的问题已经解决了。
string content = @"<html>"
+" <a href='http://www.yourdomain.com' style='width:10px;'>Click Here</a>"
+" <br>"
+" <a href='http://www.yourdomain.com/products/list.aspx' style='width:10px;'>Click Here</a>"
+" </html>";
string pattern = string.Format("{0}(?!/)", "http://www.yourdomain.com");
string replace = "http://www.mydomain.com";
string result = Regex.Replace(content, pattern, replace);
我找到的另一种替代方法是
http://www.yourdomain.com([^/])
答案 0 :(得分:2)
在替换调用中,在字符串参数的末尾添加'
。
result = content.Replace("'http://www.yourdomain.com'", "'http://www.mydomain.com'");
这样你只会在没有子链接的情况下替换网址。
答案 1 :(得分:1)
除了dealing with HTML using regex的常规警告外,字母\b
在字母(\w
)和非字母(\W
)之间匹配,因此它匹配在m
和'
之间以及m
和/
之间。
要在网址结尾后明确禁止/
您可以使用否定前瞻,请参阅here:
http://www.yourdomain.com(?!/)