python网络爬虫之正则表达式(续)
RE库的match对象
match对象有很多属性 下面主要介绍三种: 注意match对象只包含一次匹配的结果
.string 待匹配的文本
.re 是匹配时使用的pattern对象 (正则表达式)
.pos正则表达式搜索文本的开始位置(从0位置开始搜索)
.endpos 正则表达式搜索文本的结束位置
.group(0)是获得匹配后的字符串
.start() 匹配字符串在原始字符串的开始位置(待匹配的字符串中满足正则表达式的开始位置)
.end()匹配字符串在原始字符串的结束位置
.span() 返回一个元组类型 分别包括(.start() , .end())两个位置
代码为:
import re
m=re.match(r'[1-9]\d{5}','xuanxuan298434 keke293390') !!!!这个地方是错的!!!
将上面的语句改为:
m=re.search(r'[2-9]\d{5}','xuanxuan932483 keke023902') 注意:这个地方m是re库的search方法所得到的match对象
#因为 match方法是从起始位置开始匹配正则表达式 而search是直接搜寻 xuanxuann那段字符串刚开始是字符而不是数字
m.string 这一步是对上一步的得到的match对象调用string方法
m.re
m.group(0) 只返回一次匹配的结果
m.finditer() 可以返回所有 存储为列表的形式 我在命令行输入发现是错的
m.pos()
m.endpos()
m.start()
m.end()
m.span()
RE库的贪婪匹配和最小匹配
re库默认采用贪婪匹配 也就是说在给定的字符串中选择最长的那个进行匹配 也就是输出匹配最长的字串
如果我们不加限制 仅采用search方法进行匹配
import re
m=re,search(r'PY.*N',’PYANBNCNDN‘)
match.group(0)
有的时候我们需要输出最短的字符串,只需要将原来的正则表达式部分增加一部分 就是进行扩展 也就是最小匹配操作符:
*? 前一个字符0次或者无限次扩展 最小匹配
+?前一个字符1次或者无线次扩展 最小匹配
??前一个字符0次或者1次扩展 最小匹配
{m,n}?扩展前一个字符m到n次 最小匹配
RE库正则表达式入门小结
其实可以直接调用re库的那六个函数 或者先用re.compile()函数将正则表达式编译成正则表达式对象 再用正则表达式对象去调用这些函数
正则表达式很好的支持了文本的匹配和文本的替换的一些操作