C#爬虫——正则表达式

Posted 庚子年冲冲冲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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




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

 代表一个空格

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

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

咱们下期见!





扫描二维码关注我吧


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

以上是关于C#爬虫——正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫_正则表达式

Python 爬虫-正则表达式

网络爬虫--正则表达式

python爬虫——正则表达式

python 爬虫 03-正则表达式

python爬虫正则表达式