Code Bye

使用正则替换html中包含指定文字链接的url

问一下怎么样使用正则替换html中包含指定文字链接的url?
例如:将下面一段html中包含“学生”两个字链接的url替换成”http://www.baidu.com”
一口吃的<a class="vote_down" href="http://www.sina.com"  target="_blank">监考老师</a>发现一学生在作弊,便气急败坏地指着那学生吼道:你…你…你…你…你竟敢作弊,站起来!语毕,有<a id="problem_action" href="http://www.163.com"  target="_blank">5名学生站了起来</a>!

替换url后变成

一口吃的<a class="vote_down" href="http://www.sina.com"  target="_blank">监考老师</a>发现一学生在作弊,便气急败坏地指着那学生吼道:你…你…你…你…你竟敢作弊,站起来!语毕,有<a id="problem_action" href="http://www.baidu.com"  target="_blank">5名学生站了起来</a>!

谢谢各位!

解决方案

100

var replaceStr = "http://www.baidu.com";
            var keywords = "学生";
            string html = @"一口吃的<a class=""vote_down"" href=""http://www.sina.com""  target =""_blank"" > 监考老师</a>发现一学生在作弊,便气急败坏地指着那学生吼道:你…你…你…你…你竟敢作弊,站起来!语毕,有<a id=""problem_action"" href =""http://www.163.com""  target =""_blank"" > 5名学生站了起来</a>!";
            var pattern = string.Format(@"(?is)(?<=<a[^>]*?href\s="")[^""]*?(?=""[^>]*?>[\s\S]*?{0}[\s\S]*?</a>)", keywords);
            Console.WriteLine(Regex.Replace(html, pattern, replaceStr));

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明使用正则替换html中包含指定文字链接的url