• 周四. 12月 1st, 2022

5G编程聚合网

5G时代下一个聚合的编程学习网

热门标签

正则

admin

11月 28, 2021

正则表达式

Regulator.exe
元字符
. 匹配任意单个字符
* 匹配前面内容出现0或多次
+ 一或多次
? 0或一次
[] 匹配[]中的字符出现一次[0-9]  [a-z]
() 改变正则优先级  (zo)+ zo出现1或多次
|  或   z|food 匹配z或food  (z|f)ood 匹配 zood或food
{n} 出现n次
{n,} 至少出现n次,最多不限
{n,m} 至少出现n次,最多出现m次
^ 以谁开头    取反
$ 以谁结尾
d 代表一个数字 等同于[0-9]
D 代表非数字 等同于[^0-9]
s 代表换行符 Tab 制表符等空白字符
w 匹配字母或数字或下划线或汉子 即能组成单词的字符
W 非w  等同于[^w]
?<month> 分组 给组起名字

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;
using System.Net;

namespace Comp.WEB.正则
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            //Regex 的一个  静态方法
          //1  Response.Write(Regex.IsMatch(“55555″,@”^d{5}$”)) ; true
           

            //2字符串提取  Match 即是静态 又是 实例方法    匹配数组
            //Regex regex = new Regex(@”d+”);
            //Match math=regex.Match(“age=30”);
            //if (math.Success)
            //{
            //    Response.Write(math.Value); //30

            //}

            //3    分组
            //Regex.Match(“age=30″, @”[a-z]”, RegexOptions.IgnoreCase);//忽略大小写
            //Match math = Regex.Match(“age=30″, @”([a-zA-Z]+)=(d+)”);   //()分组的意思
            //if (math.Success)
            //{
            //    Response.Write(math.Groups[0]); //返回的是整个整个正则表达式的结果  age=30
            //    Response.Write(math.Groups[1]); //age
            //    Response.Write(math.Groups[2]);      //30

            //}

           // 4  匹配路径 c:/a/b.txt   实际可以用Path.GetFileName更好
        //Match match= Regex.Match(“c:/a/b.txt”, @”^.+/(.+)$”);
        //if (match.Success)
        //{
        //    Response.Write(match.Groups[1].Value); //b.txt
        //}

            //5   匹配 年月日   June    26,1951
            //string [email protected]”([a-zA-Z]+)s+(d{1,2}),s*(d{4})”;
            //Match match=  Regex.Match(” June    26,1951″, r);
            //if (match.Success)
            //{
            //    //Response.Write(match.Groups[0].Value);
            //    Response.Write(match.Groups[1].Value);  //June
            //    Response.Write(match.Groups[2].Value);        //26
            //    Response.Write(match.Groups[3].Value);            //1951
            //}

            //给分组七5.1
          //  ?<>分组
            //string [email protected]”(?<month>[a-zA-Z]+)s+(?<date>d{1,2}),s*(?<year>d{4})”;
            //Match match=  Regex.Match(” June    26,1951″, r);
            //if(match.Success)
            //{
            ////输出值的时候可以有二种方式输出
            //    Response.Write(match.Groups[1].Value);
            //    Response.Write(match.Groups[“date”].Value);
            //}

            //截取ip地址
            //192.168.10.5[port=21,type=ftp]
            //string str = “192.168.10.5[port=21]”;
            //string ip = “”;
            //string port = “”;
            //string type = “http”;
            //string reg = @”(?<ip>[12]?d?d.[12]?d?d.[12]?d?d.[12]?d?d)[port=(?<port>d{1,5})(,type=(?<type>[a-zA-Z]+))?]”;
            //Match match = Regex.Match(str, reg);
            //if (match.Success)
            //{
            //    ip = match.Groups[“ip”].Value;
            //    port = match.Groups[“port”].Value;
            //    if (!string.IsNullOrEmpty(match.Groups[“type”].Value))
            //    {
            //        type = match.Groups[“type”].Value;
            //    }
            //}
            //贪婪 .+    .*   
            //string str = “大家好。我是S.H.E。我22。我是H。我很好。呜呜。fffff”;
            //str gex = @”我是(.+)。”;//匹配句话  但是 他会一直多的往后匹配 匹配到   呜呜。
            //str [email protected]”我是(.+?)。”    //非贪婪模式

           // _提取多个值  1
                //string str = “大家好,我是Hebe,我22岁了,身高180,我们团队有3个女女!”;

            //MatchCollection matches = Regex.Matches(str,@”d+”);
            //foreach (Match match in matches)
            //{
            //    if (match.Success)
            //    {
            //        Console.WriteLine(match.Value);
            //    }
            //}

            //提起多个值2

        //    string str = “大家好。我们是S.H.E。我是S。我是H。我是E。呜呜。fffff”;

        //   MatchCollection matches =  Regex.Matches(str, @”我是(.+?)”);
        //   foreach (Match match in matches)
        //   {
        //       if (match.Success)
        //       {
        //           Console.WriteLine(match.Groups[1].Value);
        //       }
        //   }

        //    Console.Read();
        //}

    // ————————————–       //从网站获取邮箱

            //从一个页面提取所有Email地址,用WebClient,自己动手写Email群发器

            //WebClient wc = new WebClient();
            // string content = wc.DownloadString(“http://192.168.1.100/email.htm“);

            // string reg = @”>(?<mail>w+([-+.’]w+)*@w+([-.]w+)*.w+([-.]w+)*)</a>”;

            //MatchCollection matches = Regex.Matches(content, reg);
            //foreach (Match match in matches)
            //{
            //    if (match.Success)
            //    {
            //        Console.WriteLine(match.Groups[“mail”].Value);
            //    }
            //}
            //——————————–

            //练习:从网从一个站抓取所有的图片地址,下载到硬盘

            // WebClient wc = new WebClient();
            // string content = wc.DownloadString(“http://192.168.1.100/photos.htm“);
            // string reg = @”style=””FLOAT:snone””stitle=.{8}sborder=0s+src=””(?<url>.+?)””>”;

            //MatchCollection mc =  Regex.Matches(content, reg);
            //foreach (Match match in mc)
            //{
            //    //Console.WriteLine(match.Groups[“url”].Value);

            //    string url = “http://192.168.1.100/” + match.Groups[“url”].Value;

            //    Console.WriteLine(Path.GetFileName(url));   //下载
           
            //}

            ////练习:抓取所有超链接,特征:href=”地址“
            //WebClient wc = new WebClient();
            //string content = wc.DownloadString(“http://192.168.1.100/photos.htm“);
            // string reg = @”http(s)?://([w-]+.)+[w-]+(/[w- ./?%&=]*)?”;
            //MatchCollection mc =   Regex.Matches(content, reg);

            //foreach (Match match in mc)
            //{
            //    if (match.Success)
            //    {
            //        Console.WriteLine(match.Value);
            //    }
            //}

            //==============第二种
            //string reg = @”align=middle><As+href=””(http(s)?://([w-]+.)+[w-]+(/[w- ./?%&=]*)?)””><IMG”;
            //MatchCollection mc = Regex.Matches(content,reg);
            //foreach (Match match in mc)
            //{
            //    if (match.Success)
            //    {
            //        Console.WriteLine(match.Groups[1].Value);
            //    }
            //}

            //练习:抓取新闻 采集工具
            //WebClient wc = new WebClient();
            //string reg = @”<divs+class=””qiushi_bodys+articles*””s+id=””w+””s+title=””.+?””>(.+?)<ps+style=””float”;
            //using (Stream stream = wc.OpenRead(“http://192.168.1.100/qb.htm“))
            //{
            //    using (StreamReader sr = new StreamReader(stream, Encoding.UTF8))
            //    {
            //        string content = sr.ReadToEnd();
            //        //单行模式匹配
            //        //让.可以匹配到

            //        MatchCollection mc = Regex.Matches(content, reg, RegexOptions.Singleline);
            //        foreach (Match match in mc)
            //        {
            //            if (match.Success)
            //            {
            //                string str = match.Groups[1].Value;
            //                //把html标签删除
            //                str = Regex.Replace(str, “<.+?>”, “”);
            //                str = str.Replace(“&nbsp”, “”).Replace(“(来自qiushibaike.com)”, “”);
            //                Console.WriteLine(str);
            //                Console.WriteLine(“==============”);
            //            }
            //        }
            //    }
            //}

            //正则替换
           // 1Regex.Replace
            //string str = “234—–233—34-3434”;
            //str =  Regex.Replace(str,@”-+”,”-“); //多个-     //一个-
            //Console.WriteLine(str)          //234-233-3434

              //2—————   好多空格替换成一个空格
            //string str = “234       233  34 3434”;
            //str = Regex.Replace(str,@” +”,” “);
            //Console.WriteLine(str);

              //3 将中文的双引号替换为英文双引号

           // string str = “string s1 = “red”;string s2 = “blue””;
           // str = Regex.Replace(str, ” “(.+?)””, “”$1″”);
                                           //找到双引号里面的内容用一个组 包起来 不想他被替换 只是替换 外面的双引号
                                            //$1 匹配组里的内容             
            //Console.WriteLine(str);

            //3 将英文文的双引号替换为中文双引号

           //  string str = “string s1 = “red”;string s2 = “blue””;
           //  str = Regex.Replace(str, ” “(.+?)””, ““$1””);
           //// 找到双引号里面的内容用一个组 包起来 不想他被替换 只是替换 外面的双引号
           // //$1 匹配组里的内容             
           // Console.WriteLine(str);

            //4字符串前后替换
            //string str = “age=30”;
            //str = Regex.Replace(str, @”(w+)=(d+)”, “$2=$1”);
            //Console.WriteLine(str);

            //5替换字符串格式 日期格式
            //string str = “我的生日是05/21/2010耶,他的生日05/21/2010,05/21/2010”;

            //str =  Regex.Replace(str, @”(d{2})/(d{2})/(d{4})”, “$3-$1-$2”);
                                                                      //$3 第三组的内容
            //Console.WriteLine(str);

            //6      给一段 连接自动加上超链接
            //string str = “http://www.itcast.cn,,,,,,http://g.cn……http://www.qiushibaike.com“;
            //str = Regex.Replace(str, @”(http(s)?://([w-]+.)+[w-]+(/[w- ./?%&=]*)?)”, “<a href=’$1′>$1</a>”);
            //Console.WriteLine(str);
            //Console.Read();
           

            //   ubb 转义
            //string str = “你好,[i]我发[/i]现一个[b]新网站[/b],[b]大家[/b]来看呀[url=http://www.qq.com]秋秋[/url],另外一个有时间也可以看看[url=http://www.rupeng.com]如鹏[/url],还有[url=http://www.itcast.cn]传智播客[/url]”;

            //str = Regex.Replace(str, @”[[iI]](.+?)[/[iI]]”, “<i>$1</i>”);
            // 可以大写 小写
            //str = Regex.Replace(str, @”[[bB]](.+?)[/[bB]]”, “<b>$1</b>”);
            //str = Regex.Replace(str, @”[(url|URL)=(.+?)](.+?)[/(url|URL)]”, “<a href=’$2′>$3</a>”);

            //Console.WriteLine(str);

            //Console.Rea
        }
    }
}

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注