Python的正则表达式
这里推荐http://deerchao.net/tutorials/regex/regex.htm,写的简介明了,初学者很容易懂
在爬虫过程中,爬回来的数据是字符串,字符串的内容是页码的HTML,我们要从字符串中提取所有提到的URL,就要求爬虫的程序有字符串处理能力,而正则表达式刚好有这个功能。
1.什么是正则表达式?
在编程或者处理页面代码时,经常会寻找符合某些特定规则的字符串。正则表达式就是描述这些规则的工具,换句话说,正则表达式就是记录这些规则的代码。
如果说某个字符串匹配某个正则表达式,一般指的是字符串中某一部分或者某几部分满足正则表达式的要求。
\b是正则表达式的一个特殊代码,表示单词的开始和结束,eg:\bhi\b,表示“hi”;
如果要找hi之后不选处的Lucy,形式就是:\bhi\b.*\blucy\b;
“.” 是一个元字符,匹配除了换行以外的任意的字符。
“*”任意数量的字符,但是不包括换行。
0\d\d-\d\d\d\d\d\d\d\d 以0开始然后两个数字,再-最后在接8个数字,\d也是一个元字符,表示数字,上面的表达也可以写成0\d{2}-\d{8}
2.测试正则表达式的工具
Regester:测试和分析正则表达式
下载安装链接:http://deerchao.net/tools/regester/index.htm
3.元字符
代码 | 说明 |
---|---|
. | 匹配除换行符以外的任意字符 |
\w | 匹配字母或数字或下划线或汉字 |
\s | 匹配任意的空白符 |
\d | 匹配数字 |
\b | 匹配单词的开始或结束 |
^ | 匹配字符串的开始 |
$ | 匹配字符串的结束 |
4.重复
代码/语法 | 说明 |
---|---|
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
5.字符类
[]例如[abcd]表示匹配相应的英文字母
6.分支条件
|,满足其中的一个或多,价相当于“或”的用法,“条件1|条件2”
7.反义
代码/语法 | 说明 |
---|---|
\W | 匹配任意不是字母,数字,下划线,汉字的字符 |
\S | 匹配任意不是空白符的字符 |
\D | 匹配任意非数字的字符 |
\B | 匹配不是单词开头或结束的位置 |
[^x] | 匹配除了x以外的任意字符 |
[^aeiou] | 匹配除了aeiou这几个字母以外的任意字符 |