vlambda博客
学习文章列表

C#爬虫——正则表达式

This browser does not support music or audio playback. Please play it in Weixin or another browser.
C#爬虫——正则表达式


我希望未来有一天,因为我的代码,让这个世界上的一些人生活的更便利
感觉到一点点幸福或愉悦。不管这些人多还是少。

前言


正则表达式的本质是为了截取字符串,对字符串作一些复杂的操作。前面两篇文章我都没有使用正则表达式,而是使用string类里的几个方法IndexOf、Substring封装了一个截取字符串的功能,但随着爬取的内容越来越复杂就变得有些力不从心了。今天便下一番功夫学习了正则表达式。

C#爬虫——正则表达式
C#爬虫——正则表达式

C#爬虫——正则表达式


方案思路


正则表达式这玩意,初看就像天书一样,如上图,而且网上的教程千篇一律,全都是复制粘贴没有多大参考性,对入门者得积极性打击很大。我在加了数个qq群问了些大神后,终于有所头绪了。

正则表达式其实并不难,但需要记得东西特别多。下面我就以C#语言来记录并介绍一下。

C#爬虫——正则表达式
C#爬虫——正则表达式

Code




以下代码经过测试,可直接在项目中使用

\b 代表一个空格

\s 代表一个任意的空白符。如:空格,制表符,换行符等等


. 代表一个除了换行符以外的所有字符

\w 代表一个字母或数字或下划线或汉字

\d 代表一个数字


反义符:

\B,\S,\W,\D 它们的含义与小写的相反


重复:

* 代表在它前面的字符。重复零次或更多次

+ 代表在它前面的字符。重复一次或更多次

代表在它前面的字符。重复零次或一次

{n} 代表在它前面的字符。重复n次

{n,} 代表在它前面的字符。重复n次或更多次

{n,m} 它代表在它前面的字符。重复n次到m次之间


() 分组符,截取若需要输出时就要括起来


[^x] 匹配除了x以外的任意字符


组合:

"字符串1"(.*?)"字符串2"    这个代表它需要截取得部分。然后前面与后面写下字符串把它卡住(卡住这个词语比较贴切)

"字符串1"([^"字符串2"]*?)"字符串2字符串3"    这个跟上面得功能很相似


贪婪模式:.* 非贪婪模式:.*?

//命名空间

using System.Text.RegularExpressions;

//新建一个正则表达式

Regex regNumt = new Regex("<divclass=\"w1[^s]*?strong>([^<]*)</strong>");

//开始截取

MatchCollection getNumTest = regNumt.Matches(string);

//循环输出

foreach (Match item in getNumTest)

{

    //再新建一个正则:最后一位数是否为数字1-9

    Regex regNum = new Regex("[0-9]+$");

    //判断

    if (!regNum.IsMatch(item.Groups[1].Value))

    {        

        //截取的结果

        L_Num.Add(item.Groups[1].Value);

    }

}







END




感谢阅读


你知道的越多,你不知道的越多

我是EAST

一个靠互联网苟且偷生的程序员

咱们下期见!





扫描二维码关注我吧


庚子年冲冲冲 发起了一个读者讨论 留言区