• 【转】正则应用实例,如将多个空格改为1个空格


    正则应用实例  

     

     http://ityear.blog.163.com/blog/static/93301609200991653840662/
     

    1. c#下将多个空格替换成一个:

    using System.Text.RegularExpressions;
    Regex regexStr = new Regex(@"( ){1,}");
    key = regexStr.Replace(key, " ");

    //@"( ){1,}" 表示从1开始,多个空格,即1个以上空格,即连着1个,2个,3个等,改为2的话即表示2个以上空格,这时不包括1个空格


     Regex regexStr = new Regex(@"( |,){1,}");
    //连续多个空格或连续多个

    2.判断url是否是http://aa.dichan.com 或者 http://aa.bb.dichan.com 格式,即,url中包含http:// 和.dichan.com 且.dichan.com前不可出现两个点,即不能出现如:http://aa.bb.cc.dichan.com


            url = url.ToLower();
            System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"http://([a-z1-9-_]{1,50}(.[a-z1-9-_]{1,10})?)(.)dichan(.)com/(.*)");
            if (regex.Match(url).Success)
            {
                Response.Write("符合要求");
            }
            else
            {
                Response.Write("不符合要求");
            }

    详细分解: [a-z1-9-_] 表示要求是a-z的字母,1-9的数字,"-"中杠和"_"下杠,除此以外的字符均不符合要求。
       {1,50} 表示前面的长度为1-50,即[a-z1-9-_]的长度为1-50。
       (.[a-z1-9-_]{1,10})?) 表示一个点后面再接一次字符,[a-z1-9-_]{1,10}解释同上。?表示前面(.[a-z1-9-_]{1,10})出现0次或一次,也就是表示可以有个点,也可以没有点。有点的话,点后面的字符的长度最大为10。

    3.将http://news.dichan.com/20081120/abc.html 跳转至实际地址:http://news.dichan.com/2008/11/20/abc.html
        <RewriterRule>
            <LookFor>~/(d{4})(d{2})(d{2})/(.*).html</LookFor>
            <SendTo>~/c/$1/$2/$3/$4.html</SendTo>
          </RewriterRule>


    4. 下面例子中,先把<div class="digest">和</div>中的内容取出来,再把整个这一句删掉
    string regex = @"<div.*?class=s*(""|')?digest(""|')?>(?<hexintishi>(.| )*?)</div>";
    MatchCollection mcXX = Regex.Matches(content, regex, RegexOptions.IgnoreCase | RegexOptions.Singleline);
    foreach (Match m in mcXX)
    {
     if (m.Groups["hexintishi"].ToString().Length > 1)
     {
         hexintishi = m.Groups["hexintishi"].ToString();   
     }
    }

                Regex regexStr = new Regex(@"<div.*?class=s*(""|')?digest(""|')?>(?<hexintishi>(.| )*?)</div><br />");
                content = regexStr.Replace(content, "");


    5.      //keywords为关键词,是要replace的字符串.
     //content为内容,将此内容中出现的关键词加上链接.
     //如果此关键词已经加上链接,则链接中的字符不再加链接.
     //如:关键词为:[房地产,地产],房地产已经加链接,那么地产就不再加链接,不然会出错.
     Regex regexStr1 = new Regex(@"( +| +|,+|,+)");   //一个或多个(空格,或,全角空格,或,逗号,或,全角逗号)
     if (keywords != null)
            {
                keywords = regexStr1.Replace(keywords, ",");  //替换为一个逗号
                string[] s12 = keywords.Split(',');
                for (int kk = 0; kk < s12.Length; kk++)
                {
                    Regex re = new Regex("<a .*" + s12[kk] + ".*<\/a>"); //判断此关键词是否已经在<a></a>中
                    if (re.IsMatch(content)) { continue; } //如果在就跳过此关键词,匹配下一个.
                    re = new Regex(s12[kk]);  //如果不存在.就重写下regex,再直接按关键词匹配

                    content = re.Replace(content, "<a href="" + HttpUrl + "search.aspx?key=" + s12[kk] + "" target="_blank">" + s12[kk] + "</a>", 1);  //最后加1表示只匹配一次,即正文中出现多个房地产,也只给你一个加上链接.
                }
            }

    特殊字符   说明     
      $   --   匹配输入字符串的结尾位置。如果设置了   RegExp   对象的   Multiline   属性,则   $   也匹配   ' '   或   ' '。要匹配   $   字符本身,请使用   $。     
      (   )   --   标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用   (   和   )。     
      *   --   匹配前面的子表达式零次或多次。要匹配   *   字符,请使用   *。     
      +   --   匹配前面的子表达式一次或多次。要匹配   +   字符,请使用   +。     
      .   --   匹配除换行符   之外的任何单字符。要匹配   .,请使用   。     
      [   --   标记一个中括号表达式的开始。要匹配   [,请使用   [。     
      ?   匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配   ?   字符,请使用   ?。     
         将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如,   'n'   匹配字符   'n'。' '   匹配换行符。序列   '\'   匹配   "",而   '('   则匹配   "("。     
      ^   --   匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配   ^   字符本身,请使用   ^。     
      {   --   标记限定符表达式的开始。要匹配   {,请使用   {。     
      |   --   指明两项之间的一个选择。要匹配   |,请使用   |。

  • 相关阅读:
    爬虫之JSON
    爬虫bs4案例
    爬虫bs4
    爬虫之Xpath案例
    爬虫之xpath
    监控 Kubernetes 集群应用
    手动部署k8s-prometheus
    ingress之tls和path使用
    ingress安装配置
    kube-dns和coreDNS的使用
  • 原文地址:https://www.cnblogs.com/yuan2013/p/3725922.html
Copyright © 2020-2023  润新知