学爬虫前必备知识-数据提取

正则表达式

01_元字符

量词 功能
* (贪婪) 重复零次或更多
+ (懒惰) 重复一次或更多次
? (占有) 重复零次或者一次
{n} 重复n次
{n, m} 重复n,m次
{n,} 重复n次或者更多次
[abc] 字符组 匹配包含括号内元素的字符

02_几种反义

反义 功能
\W 匹配任意不是字母,数字,下划线 的字符
\S 匹配任意不是空白符的字符
\D 匹配任意非数字的字符
\B 匹配不是单词开头或结束的位置
[^abc] 匹配除了abc以外的任意字符

03_量词

贪婪(贪心) 如"*"字符 贪婪量词会首先匹配整个字符串,尝试匹配时,它会选定尽可能多的内容,如果 失败则回退一个字符,然后再次尝试回退的过程就叫做回溯,它会每次回退一个字符,直到找到匹配的内容或者没有字符可以回退。相比下面两种贪婪量词对资源的消耗是最大的,

懒惰(勉强) 如 "?" 懒惰量词使用另一种方式匹配,它从目标的起始位置开始尝试匹配,每次检查一个字符,并寻找它要匹配的内容,如此循环直到字符结尾处。

占有 如"+" 占有量词会覆盖事个目标字符串,然后尝试寻找匹配内容 ,但它只尝试一次,不会回溯,就好比先抓一把石头,然后从石头中挑出黄金

量词 功能
* (贪婪) 重复零次或更多
+ (懒惰) 重复一次或更多次
? (占有) 重复零次或者一次
{n} 重复n次
{n, m} 重复n,m次
{n,} 重复n次或者更多次

04_懒惰限定符

类型 正则表达式
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复

常用的正则表达式

01_校验数字的表达式

类型 正则表达式
数字 ^[0-9]*$
n位的数字 ^\d{n}$
m-n位的数字 ^\d{m,n}$
零和非零开头的数字 ^(0|1-9][0-9]*)$
浮点数 ^(-?\d+)(.\d+)?$

02_校验字符的表达式

类型 正则表达式
汉字 ^[\u4e00-\u9fa5]{0,}$
英文和数字 ^[A-Za-z0-9]+$
中文、英文、数字包括下划线 ^[\u4E00-\u9FA5A-Za-z0-9_]+$
可以输入含有^%&',;=?$"等字符 [^%&',;=?$\x22]+ 12

03_特殊表达式

类型 正则表达式
Email地址 ^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)*$
域名 a-zA-Z0-9{0,62}(/.a-zA-Z0-9{0,62})+/.?
InternetURL ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?$
手机号码 ^(13[0-9]|14[5[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
身份证号(15位、18位数字): ^\d{15}
短身份证号码(数字、字母x结尾): ^([0-9]){7,18}(x|X)?$
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线) ^[a-zA-Z]\w{5,17}$
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间) ^(?=.\d)(?=.[a-z])(?=.*[A-Z]).{8,10}$
日期格式 ^\d{4}-\d{1,2}-\d{1,2}
xml文件 ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.x|X[I|L]$
IP地址(提取IP地址时有用) \d+.\d+.\d+.\d+
上一篇:Java和js常用表达式


下一篇:十分钟学会正则表达式