Python之re库

Python常用库之re库
re库的说明
可以用于解析网页提取信息同样可以用BeautifulSoup或者xpath等来替代解析
需要导入re模块Python自带import re

学习正则表达式之前需要了解什么叫原子
原子类型:所有打印字符(a-z,A-Z,0-9,-,*,&@!()等)和非打印字符(换行、Tab键等)都可以作为原子
原子类型有四类
1.通用字符,
\w 代表字母,数字,下划线
\W 代表除字母,数字,下划线
\d 代表十进制数字
\D 代表除十进制数字
\s 代表空白字符
\S 代表空白字符以外的东西
2.普通字符
就是一些普通的字符串之类的
3.非打印字符
一些\n\t(换行符制表符一类)之类
4.原子表
用[]括起来[a-zA-Z]表示全部英语字母
示范比如有一个[uwbsd]这样的原子表
那么在匹配的时候是在这几个字符的之间有任意一个都可以匹配成功

接下来是正则表达式中的元字符
就是正则表达式中具有特殊意义的字符比如重复n次前面的字符
. 除换行符外的任意字符
^ 起始位置(就是字符从首字符匹配如果无法匹配首字符就直接返回None)==>在原子表里面代表非(用^需要加[]来括起来)
$ 结束位置

  • 出现0\1\多次
    ? 0次或者1次
  • 出现1次\多次
    [n] 出现n次
    [n,]最少出现n次
    [n,m]最少n次最多m次
    | 模式选择符
    () 模式单元就是需要提取的地方可以用()来括起来标识方便提取自己需要的东西不然可能提取出来的是包括一些html的标签标签

模式修正符可以作为search方法的参数
可以在不改变正则表达式的情况下通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整
(常用的后面用斜体表示标识)比较常用的就I和S
I 匹配的时候忽略大小写M 多行匹配
L 本地化识别匹配
U UNICODE编码
S 让.匹配换行符

接下来是贪婪模式和懒惰模式(说法不一名称不要拘泥)
两种模式的核心
贪婪模式的核心是尽可能多的匹配满足后还是寻找可以匹配的结果 .默认情况下这个就是贪婪模式
懒惰模式的核心是尽可能少的匹配满足就结束 .
? 默认懒惰模式

下面是正则表达式的一些常用方法
search(正则表达式,要匹配的字符串,[模式修正符])
match()=>参数列表和search一样但是这个是从头开始匹配的就是那个子字符串必须是母字符串的开头位置
全局匹配函数findall(大字符串)=>返回一个列表
findall也可以传入正则表达式
上面两个都只能匹配一个结果而使用了全局匹配函数会得到一个列表提取网页源代码中满足正则表达式的全部内容
全局匹配的格式重点
compile方法是构建一个正则表达式出来其中的参数实际上是正则字符串
re.compile(正则表达式).findall(数据)
sub函数用于替换=>爬虫用的不多就是把符合正则表达式的地方替换成自己想要的字符串
一个实例匹配.com和.cn的网站
import re
String=“http://www.baidu.com”
zz = “[a-zA-Z]+://[^\n]+[.com|cn]”
“”"
因为[a-zA-Z]可以匹配任何字母可能是ftp什么的应用进程后面用+是代表出现多次 由于域名中不可能有换行符的出现所以可以[^\n]但是注意这边一定要加[]否则报错
“”"
sss = re.compile(zz).findall(String)
print(sss)
注意在提取网页内容的时候需要提取什么就加()===>括号内就是自己需要提取的内容否则会带html的标签

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值