Python爬虫-正则表达式库

一、语法
操作符

.      任何单个字符
[]     字符集
[^ ]   非字符集
*      前一个字符0次或无限次
+      前一个字符1次或无限次
?      前一个字符0次或1次
|      左右表达式任意一个
{m}    扩展前一个字符m次
{m,n}  扩展前一个字符m至n次
^      匹配字符串开头
$      匹配字符串结尾
()     分组标记
\d     数字,[0-9]
\w     单词字符,[A-Za-z0-9]

经典实例

^[A-Za-z]+$     26个字符组成的字符串
^-?\d+$         整数形式字符串
\d{3}-\d{8}|\d{4}-\d{7}    国内电话号码
[1-9]\d{5}      境内邮政编码

二、Re库
主要功能函数

搜索

re.search(pattern, string, flag)
>>> match = re.search(r'[1-9]\d{5}', 'BUAA100081')
>>> if match:
...     print(match.group(0))
...
100081

匹配

re.match(pattern, string, flags=0)
>>> match = re.match(r'[1-9]\d{5}', 'BUAA100081')
>>> match.group(0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'NoneType' object has no attribute 'group'
>>> match = re.match(r'[1-9]\d{5}', 'BUAA100081')
>>> if match:
...     print(match.group(0))
...
100081

搜索

re.findall(pattern, string, flags=0)
>>> list = re.findall(r'[1-9]\d{5}', 'BUAA100081 TSU100084')
>>> list
['100081', '100084']

分割

re.split(pattern, string, maxsplit=0, flags=0)
>>> re.split(r'[1-9]\d{5}', 'BUAA100081 TSU100084')
['BUAA', ' TSU', '']
>>> re.split(r'[1-9]\d{5}', 'BUAA100081 TSU100084', maxsplit=1)
['BUAA', ' TSU100084']

搜索,返回迭代类型

re.finditer(pattern, string, flags=0)
>>> for m in re.finditer(r'[1-9]\d{5}', 'BUAA100081 TSU100084'):
...     if m:
...         print(m.group(0))
...
100081
100084

替换

re.sub(pattern, repl, string, count=0, flags=0)
>>> import re
>>> re.sub(r'[1-9]\d{5}', ':zipcode', 'BUAA100081 TSU100084')
'BUAA:zipcode TSU:zipcode'

三、Match对象
四、贪婪匹配和最小匹配
贪婪匹配

>>> match = re.search(r'PY.*N', 'PYANBNCNDN')
>>> match.group(0)
'PYANBNCNDN'

最小匹配

>>> match = re.search(r'PY.*?N', 'PYANBNCNDN')
>>> match.group(0)
'PYAN'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值