Python爬虫系列:正则表达式~End
2021年07月03日 23:50 __ _ _ _ _

除了自己的判断之外,没有人可以给我一条或者一系列内幕消息让我不停挣钱。我花了5年时间才学会如何聪明地玩游戏,让我在自己判断正确的时候挣到大钱。
——《股票大作手回忆录》

昨天写了关于正则表达式的raw string原生字符串和相关函数的用法,那么关于正则库中函数的其它用法是否能引起你注意呢?
正则表达式目录:
函数扩展用法
正则的贪婪匹配和最小匹配
1.函数扩展用法
在Python爬虫中,正则库中函数的用法有另外一种等价方法,被称为 一次性用法 。 比如:
match=re.search(r'[1-9]\d{5}' , 'BIT 100081')
面向对象用法:编译后的多次操作。 比如:
pat=re.compile(r'[1-9]\d{5}') match=pat.search('BIT 100081')
那么,如何将正则表达式形式编译成正则表达式对象? 比如:
regex=re.compile(pattern,flags=0)#实例:regex=re.compile(r'[1-9]\d{5}')
这里提到了match对象, RE库的match对象:一次匹配的结果 。 比如:
import rematch=re.search(r'[1-9]\d{5}' , 'BIT 100081')if match: print(match.group(0))print(type(match))#查看match的类型
运行结果:

那么与Match对象的 属性以及说明 :
| 属性: | 说明: |
|---|---|
| .string | 待匹配的文本 |
| .re | 匹配时使用的pattern对象(正则表达式) |
| .pos | 正则表达式搜索文本的开始位置 |
| .endpos | 正则表达式搜索文本的结束位置 |
与Match对象的 方法以及说明 :
| Match对象的方法: | 说明: |
|---|---|
| .group(0) | 获得匹配后的字符串#还有group(1),group(2)等 |
| .start() | 匹配字符串在原始字符串的开始位置 |
| .end() | 匹配字符串在原始字符串发结束位置 |
| .span() | 返回(.start(),.end()) |
如下是对上述属性以及方法的实例:
import rem=re.search(r'[1-9]\d{5}','BIT100081 TSU100084')print(m.string)print(m.re)print(m.pos)print(m.endpos)print(m.group(0))print(m.start())print(m.end())print(m.span())
运行结果:

2.贪婪匹配和最小匹配
Re库默认采用贪婪匹配(尽可能多的匹配数据),即输出匹配最长发子串。 比如:
import rematch=re.search(r'PY.*N','PYANBNCNDN')print(match.group(0))
运行结果:

那么我们该如何得到 **最小匹配 ( 对于可能得到的匹配多于期望的匹配的情况,最小匹配是必要的 ) ** 呢? 比如:
import rematch=re.search(r'PY.*?N','PYANBNCNDN')print(match.group(0))
运行结果:

在最小匹配中,经常会用到 最小匹配操作符 ,关于一些相关的方法小编在这里给大家已列出:
| 操作符 | 说明 |
|---|---|
| *? | 前一个字符0次或无限次扩展,最小匹配 |
| +? | 前一个字符1次或无限次扩展,最小匹配 |
| ?? | 前一个字符0次或1次扩展,最小匹配 |
| {m,n}? | 扩展前一个字符m至n次,最小匹配 |
关于更多爬虫的用法,还待后续…


为你,千千万万遍.
往期推荐:
Python爬虫系列:正则表达式(2) 2021-07-02
六月碎碎念 || 半年已逝 2021-07-01
【算法系列02】整数二分怎么玩? 2021-06-01
一键三连,就差你了
预览时标签不可点
阅读
__
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小Bob的博客!











