您的位置:首页 > 理论基础 > 计算机网络

python网络爬虫之正则表达式(续)

2017-11-06 17:18 573 查看

RE库的match对象

我们知道正则表达式库的search match 方法调用之后它会返回一个match对象,match对象就是一次匹配的结果 它包含了很多匹配的相关信息

import re

match=re.search(r'[1-9]\d{5}','xuanxuan387249')
if match:
    print(match)

我们可以用type(match)来检查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()函数将正则表达式编译成正则表达式对象 再用正则表达式对象去调用这些函数

正则表达式很好的支持了文本的匹配和文本的替换的一些操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: