博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
正则表达式 之 C#后台应用
阅读量:6596 次
发布时间:2019-06-24

本文共 3158 字,大约阅读时间需要 10 分钟。

  正则表达式在.Net就是用字符串表示,这个字符串格式比较特殊,无论多么特殊,在C#语言看来都是普通的字符串,具体什么含义由Regex类内部进行语法分析。

  Regex 类 存在于 System.Text.RegularExpressions 名称空间。

  正则表达式可以进行字符串的匹配、字符串的提取、字符串的替换。

  C#中分别对应正则表达式的三个重要方法。

1、 IsMatch() 返回值为bool类型:

格式:Regex.IsMatch("字符串", "正则表达式");

作用:判断字符串是否符合模板要求

例如:bool b =Regex.IsMatch("bbbbg","^b.*g$");判断字符串是否以b开头且以g结尾,中间可以有其他字符,若正确返回true,否则else。

2、 Match() 返回值为Match类型,只能匹配一个

Matches() 返回值为MatchCollection集合类型,匹配所有符合的

格式:Match match = Regex.Match("字符串", "正则表达式");

或MatchCollection matches= Regex. Matches ("字符串", "正则表达式");

作用:

①提取匹配的子字符串

②提取组。Groups的下标由1开始,0中存放match的value。

例如:

Match match = Regex.Match("age=30", @"^(.+)=(.+)$");if (match.Success){         Console.WriteLine(match.Groups[0] .Value);//输出匹配的子字符串    Console.WriteLine(match.Groups[1] .Value);//获取第一个分组的内容    Console.WriteLine(match.Groups[2] .Value);//获取第二个分组的内容}

MatchCollection matches = Regex.Matches("2010年10月10日", @"\d+");for (int i = 0; i < matches.Count; i++){    Console.WriteLine(matches[i].Value);}

3、 Replace() 返回值为string

//将所有的空格替换为单个空格            string str = "   aa afds     fds  f ";            str = Regex.Replace(str, @"\s+", " ");            Console.WriteLine(str);            string str = "hello“welcome to ”beautiful “China”";            //hello"welcome to "beautiful "China"            //$1表示引用第一组。$2表示用第二组。            string strresult = Regex.Replace(str, "“(.+?)”", "\"$1\"");            Console.WriteLine(strresult);

 

常用情况:

1、贪婪模式与终结贪婪模式

string str = "1。 11。 111。 111。 ";        //".+"表示匹配任意多个任意字符,会得到整个字符串        //又因为需要匹配"。 ",所以得到结果为"1。 11。 111。 111。 "        //贪婪模式        Match matchA = Regex.Match(str, "^.+。 $");        //"?"表示终极贪婪模式,匹配时会只取一个字符        //又因为需要匹配"。 ",所以得到结果为"1。 "        Match matchB = Regex.Match(str, "^.+?。 $");

  如果发现结果与想象有差别,查看是否是贪婪模式造成的。

2、实际应用采集器(从某个网页上采集邮箱、图片或其他信息)、敏感词过滤、UBB翻译器。

[1]采集器

采集邮箱:

string url = "http://www.example.com";        //通过WebClient下载网页的源码        System.Net.WebClient client = new System.Net.WebClient();        client.Encoding = System.Text.Encoding.UTF8;        string strHtml = client.DownloadString(url);        //匹配邮箱        MatchCollection collection = Regex.Matches(strHtml, @"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$");        for (int i = 0; i < collection.Count; i++)        {            Console.WriteLine(collection[i].Value);        }

 

保存图片:

string url = "https://www.example.com/";        //通过WebClient下载网页的源码        System.Net.WebClient client = new System.Net.WebClient();        client.Encoding = System.Text.Encoding.UTF8;        string strHtml = client.DownloadString(url);        //假设需要匹配的字符串格式都为:        //\s是为了针对写完
MatchCollection collection = Regex.Matches(strHtml, "
"); for (int i = 0; i < collection.Count; i++) { string img = collection[i].Groups[1].Value.Replace("\"",string.Empty); client.DownloadFile(img, @"D:\Images\"+ Path.GetFileName(img)); Console.WriteLine(collection[i].Value); }

 

网址处理:

//把"http://www.example.com/"替换为        //http://www.example.com/        string url = "http://www.example.com/";        url = Regex.Replace(url, @"(http://[a-zA-Z0-9_\-\?=\.&]+)", "$1");

 

 [2]敏感词过滤:

 

[3]UBB翻译:

 

 

转载地址:http://bopio.baihongyu.com/

你可能感兴趣的文章
iOS 7用户界面过渡指南
查看>>
同样是做内容创业,你为什么没有别人赚得多?
查看>>
SQL Server 2008 全文搜索的一些知识
查看>>
【转】Ubuntu13.04配置:Vim+Syntastic+Vundle+YouCompleteMe
查看>>
iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比
查看>>
使用ReaderWriterLock类实现多用户读/单用户写同步
查看>>
面向对象设计模式纵横谈:Factory Method 工厂方法模式(笔记记录)
查看>>
C++使用hiredis连接带密码的redis服务
查看>>
SQL SERVER 批量生成编号
查看>>
thinkjs——一个字段一种数字代表两种状态
查看>>
numpy得到数组的index
查看>>
JSP页面重定向
查看>>
RecyclerView具体解释
查看>>
vue2.0 vue-loader
查看>>
美国埃博拉患者是怎样治愈的?
查看>>
[离散时间信号处理学习笔记] 9. z变换性质
查看>>
关系型数据库的分片原则
查看>>
浅谈线段树中加与乘标记的下放
查看>>
【IDEA】IDEA中maven项目pom.xml依赖不生效解决
查看>>
DroidCam 一片 红色 解决办法
查看>>