当前位置:网站首页 / 技术杂谈 / 正文

爬虫之正则表达式

时间:2019年06月01日 | 作者 : 张端建 | 分类 : 技术杂谈 | 浏览: 178次 | 评论 0

前言:正则表达式来规范爬虫格式,介绍一些参数和常见用法。

函数

Re.match函数

原型:match(pattern,string,flags=0).

参数:

Pattern :匹配的正则表达式
String: 要匹配的字符串
Flags: 标志位,用于控制正则表达式的匹配方式,值如下:

Re.I :忽略大小写
Re.L :做本地户识别
Re.M :多行匹配,影响
re.S :是 . 匹配包括换行符在内的所有字符
re.U :根据Unicode字符集解析字符,
re.X :使我们以更灵活的格式理解正则表达式

功能:

尝试从字符串起始位置匹配一个模式,如果不是起始位置匹配成功的话,返回None

Re.search函数

原型:search(pattern,string,flags=0)
功能:扫描整个字符串,并返回第一个成功匹配的。


Re.findall函数

原型:findall(pattern,string,flags=0)
功能:扫描整个字符串,并返回结果列表。


Re.finditer函数

原型:finditer(pattern,string,flags=0)
功能:扫描整个字符串,返回的是一个迭代器。

元字符

. 匹配除换行符以外的任意字符
【0123456789】 [ ] 字符集合,表示匹配方括号中包含的任意一个字符
^ 在中括号里面表示匹配除括号里面以外的所有字符
括号外面表示开头
\d 匹配数字
\D 匹配非数字字符
\w 匹配数字,字母和下划线,同[0-9a-zA-Z_]
\W 匹配非数字,字母和下划线,同[^0-9a-zA-Z_]
\s 匹配任意的空白符(空格,换行,回车,换页,制表)同 [\f\n\r\t]

锚字符

$ 行尾匹配
^ 行首匹配
\A 匹配字符串开始,和^区别是:\A只匹配整个字符串的开头,即使在re.m模式下也不会匹配他行的行首
\Z 匹配字符串结尾,和^区别是:\A只匹配整个字符串的开头,即使在re.m模式下也不会匹配他行的行尾
\b 匹配 一个单词的边界,也就是单词和空格间的位置
\B 匹配非单词边界

匹配多个字符

() 括号里的内容作为一个整体去匹配
? 匹配0个或者一个字符

  • 匹配一个或者任意多个字符
  • 匹配至少一个字符
    X{n} 匹配确定的n个x(n是一个非负整数)
    X{n,} 匹配至少n个x
    X{n,m} 匹配至少n个x,最多m个x
    X | y 匹配的是x或y

最小匹配

*?            
+?         
X?

字符串切割

Re.split()

字符串替换和修改

Sub(pattern,rep1,string,count=0,) 返回一个被替换的字符串.

Subn(pattern,rep1,string,count=0,) 可以知道修改了多少次,返回一个元组.

Pattern: 正则表达式(规则)
Rep1: 指定的用来替换的字符串
String: 目标字符串
Count: 最多替换次数

功能:在目标字符串中以正则表达式规则匹配字符串,再把他们替换成指定的字符串,可以指定替换次数,如果不指定,替换所有匹配字符串

编译

使用正则表达式时,re模式干两件事

1、 编译正则表达式,如果不合法,会报错
2、 用编译后的正则表达式去匹配对象

示例:

pat=”正则表达式”
编译成正则对象
Re_telephon = re.compile(pat)
Print(re_telephon.match(“124165465”))

参考链接

https://www.runoob.com/regexp/regexp-tutorial.html

推荐您阅读更多有关于“python正则表达式爬虫,”的文章

请在这里放置你的在线分享代码

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。