zoukankan      html  css  js  c++  java
  • 正则表达式:为站内链接加上域名

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

  • 相关阅读:
    Cognos无法解密来着内容库的用户名和密码凭证
    JavaScript 中的对象引用
    npm install出现的错误
    箭头函数中this的用法
    [译]ArcGIS Server Map Service Cache的组织结构
    [C#] 如何选择抽象基类与接口
    数据库设计规范
    在DataTable中查询应该注意的问题
    坦克大战总结
    仓库管理系统总结(1)
  • 原文地址:https://www.cnblogs.com/cnblogsfans/p/1655121.html
Copyright © 2011-2022 走看看