C#爬虫——正则表达式
前言
正则表达式的本质是为了截取字符串,对字符串作一些复杂的操作。前面两篇文章我都没有使用正则表达式,而是使用string类里的几个方法IndexOf、Substring封装了一个截取字符串的功能,但随着爬取的内容越来越复杂就变得有些力不从心了。今天便下一番功夫学习了正则表达式。
方案思路
正则表达式这玩意,初看就像天书一样,如上图,而且网上的教程千篇一律,全都是复制粘贴没有多大参考性,对入门者得积极性打击很大。我在加了数个qq群问了些大神后,终于有所头绪了。
正则表达式其实并不难,但需要记得东西特别多。下面我就以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
一个靠互联网苟且偷生的程序员
咱们下期见!
扫描二维码关注我吧