1、测试文本
<a href='http://search/a.aspx'>home</a> <a href='/aab/bb'>hello</a><a href='http://www.sohu.com'>sohu</a><p>sdfsf</p> <a href="/aab/bb">hello</a> <div>hello world</div> <a href="aaa/bb"></a>
2、为站内链接加上域名
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string s = File.ReadAllText(@"c:\a.txt"); //给所有非http的链接加上域名,链接前无/ string d = Regex.Replace(s, @"<a\s+href\s?=\s?[\'|\""]((?!http)/.*)?[\""\']", @"<a href=""www.cnblogs.com$1""", RegexOptions.Compiled|RegexOptions.IgnoreCase); //给所有非http的链接加上域名,链接前有/ string e = Regex.Replace(d, @"<a\s+href\s?=\s?[\'|\""]((?!http)(?!/).*)?[\""\']", @"<a href=""www.cnblogs.com/$1""", RegexOptions.Compiled | RegexOptions.IgnoreCase); // Console.WriteLine(d); Console.WriteLine(e); Console.Read(); } } }
a. 不包含http, (?!http)表示。
b. 非贪婪匹配 ?> 代表遇到第一个>匹配结束。
c. $1代表前面的组1.
d. 双引号在模式里\""
e. 双引号在@转义的字符串里用两个""表示.