python爬虫入门(六)------正则表达式学习

正则表达式的介绍

正则表达式:用于表达一组字符串的方式(简洁)

例如:'pn' 'pyn' 'pytn' 'pythn' 'python' 对应正则表达式:p(y|yt|yth|ytho)?n
正则表达式的常用操作符
.     表示任何单个字符;
[]    字符集,对单个字符给出取值范围; [abc]表示a、b、c,[a-z]表示a到z单个字符
[^]   非字符集,对单个字符给出排除范围;[^abc]表示非a或b或c的单个字符
*     前一个字符0次或无限次扩展;abc*表示ab、abc、abcc、abccc等
+     前一个字符1次或无限次扩展;abc+表示abc、abcc、abccc等
?    前一个字符0次或1次扩展;abc?表示ab、abc
|     左右表达式任意一个;abc|def 表示abc、def
{m}   扩展前一个字符m次; ab{2}c 表示abbc
{m,n} 扩展前一个字符m次至n次(含n){:3}代表0到3次; ab{1,2}c表示abc、abbc
^     匹配字符串开头;^abc表示abc且在一个字符串的开头
$     匹配字符串结尾;abc$表示abc且在一个字符串的结尾
()    分组标记,内部只能使用|操作符;(abc)表示abc,(abc|def)表示abc、def
\d    数字,等价于[0-9];
\w    单词字符,等价于|A-za-z0-9_|

经典实例

实例:经典的正则表达式实列
^[A-Za-z]+$            由26个字母组成的字符串
^[A-Za-z0-9]      	   由26个字母和数字组成的字符串
^-?\d+$                整数形式的字符串
^[0-9]*[1-9][0-9]*$    正整数形式的字符串
[1-9]\d{5}             中国境内邮政编码,6位
[\u4e00-\u9fa5]        匹配中文字符
\d{3}-\d{8}|\d{4}-\d{7} 国内电话号码,010-68913536

在python中使用

re 是python 处理字符串的库 正则表达式的表示类型 raw string原生字符串
r’text’:指不包含转义字符的字符串(其中的转义字符不会被理解成转义字符)
string类型,比较繁琐,所以当正则表达式中有转义字符时使用raw string

re库函数

re.search(pattern,string,flags=0) 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象
    pattern:正则表达式的字符串或原生字符串表示
    string:待匹配字符串
    flags:正则表达式使用时的控制标记(常用标记:re.I re.IGNORECASE 忽略正则表达式的大小写,[A~Z]能够匹配小写字符;re.M re.MULTILINE 正则表达式中的^操作符能够将给定字符串的每行当作匹配开始;re.S re.DOTALLA 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符)
re.match()从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall()搜索字符串,以列表类型返回全部能匹配的字串
re.split()将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
re.finditer()搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub(,repl,,count=0)在一个字符串中替换所有匹配正则表达式的字串,返回替换后的字符串; repl:替换匹配字符串额字符串 count:匹配的替换次数

match对象:

match对象:
他的属性: 
.string 待匹配的文本; 
.re 匹配时使用的pattern对象(正则表达式);
.pos正则表达式搜索文本的开始位置;
.endpos正则表达式搜索文本的结束位置
方法:
.group(0)获得匹配后的字符串;
.start()匹配字符串在原始字符串的开始位置
.end()匹配字符串在原始字符串的结束位置;
.span()返回(.start()..end()

Re库的另一种等价用法:

regex = re.compile(pattern,flags=0)将正则表达式的字符串形式编译成正则表达式对象(可以加快运行速度)
Re库的另一种等价用法:
rst = re.search(r'[1-9]\d{5}','BIT 100081') #函数用法:适合一次性操作
pat = re.compile(r'[1-9]\d{5}') rst = pat.search('BIT 100081') #面向对象用法:编译后的多次操作 
具体用法:
regex = re.compile(pattern,flags=0)
将正则表达式的字符串形式编译成正则表达式对象 pattern:正则表达式的字符串或原生字符串表示;flags:正则表达式使用时的控制标记
regex.search()和以上Re库的用法一样,去掉其中的pattern参数就行

注:

贪婪匹配:re库默认采用贪婪匹配,即输出匹配最长的子串;例如:match =
re.search(r’PY.N’,‘PYANBNCNDN’);match.group(0) match =
re.search(r’PY.
?N’,‘PYANBNCNDN’);match.group(0)输出最短字符串 最小匹配操作符:
*?:前一个字符0次或无限次扩展,最小匹配;
+?:前一个字符1次或无限次扩展,最小匹配; ??前一个字符0次或1次扩展,最小匹配; {m,n}?扩展前一个字符m至n次(含n),最小匹配

参考学习网址:
https://www.icourse163.org/course/BIT-1001870001

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值