• 正则表达式:为站内链接加上域名


    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. 双引号在@转义的字符串里用两个""表示.

  • 相关阅读:
    插入排序
    JavaMail学习笔记
    汉诺塔问题
    使用Three.js绘制一个虚拟城市
    jquery flotcharts使用简介
    用CSS hack技术解决浏览器兼容性问题.
    IE条件注释详解.
    让IE6也认识!important
    代码重构(转)
    模版+数据分离渲染方式的设计与实现
  • 原文地址:https://www.cnblogs.com/cnblogsfans/p/1655121.html
Copyright © 2020-2023  润新知