[笔记]python爬虫:正则表达式库re

1.正则表达式的语法:

正则表达式的常用操作符:

常用操作符含义
.表示单个字符
[]字符集,[a-z]表示a到z之间的字符
[^]非字符集,对单个字符给出排除范围
*前一个字符出现0次或者无限次扩展
+前一个字符出现1次或者无限次扩展
?前一个字符出现0次或者1次扩展
|左右表达式的任意一个
{m}扩展前一个字符m次
{m,n}扩展前一个字符m到n次(含n次)
^匹配字符串的开头
$匹配字符串的结尾
()分组标记,内部只能用
\d数字,等价于[0-9]
\w单词字符,等价于[A-z a-z 0-9]

2.re库的基本使用:

re.search(pattern, string, flags=0)
作用:在字符串中搜索匹配正则表达式第一个位置

参数含义
pattern正则表达死字符串或者原生字符串表示
string待匹配字符串
flags正则表达式使用时的控制标记

范例:

match=re.search(r'[1-9]\d{4}', 'BIT 10081')
if match:
    print(match.group(0))

re.match(pattern, string, flags=0)
作用: #在字符串中的开始位置起匹配正则表达式
范例:

match1=re.match(r'[1-9]\d{4}', '10081 BIT')
match2=re.match(r'[1-9]\d{4}', 'BIT 10081')
if mathc1:
    print(match1.group(0))
if match2:
    print(match2.group(0))

re.findall(pattern, string, flags=0)
作用:搜索字符串,以列表类型返回全部匹配字符串
范例:

ls=re.findall(r'[1-9]\d{4}', 'BIT10081 TS10084')
print(ls)

re.split(pattern, string, maxsplit=0, flags=0)
作用:将一个字符串安正则表达式匹配结果分割
范例:

re.split(r'[1-9]\d{4}', 'BIT10081 TSU10084')
re.split(r'[1-9]\d{4}', 'BIT10081 TSU10084', maxsplit=1)

re.finditer(pattern, string, flags=0)
作用:搜索字符串,返回一个匹配结果的迭代类型
范例:

for m in re.finditer(r'[1-9]\d{4}', 'BIT10081 TSU10084'):
    if m:
        print(m.group(0))

re.sub(pattern, repl, string, count=0, flags=0)
作用:在一个字符串中替换所有匹配正则表达式的子串

参数含义
repl替换匹配字符串的字符串
count匹配的最大替换次数
flags正则表达式使用时的控制标记

范例:

re.sub(r'[1-9]\d{4}', ':zipcode', 'BIT10081 TSU10084')

3.re库的一种等价用法

print('表达式1:')
rst=re.search(r'[1-9]\d{4}', 'BIT10081')

print('等价表达式2:')
pat=re.compile(r'[1-9]\d{4}')
rst=pat.search('BIT10081')

4.re库的match对象

match对象的属性:

属性含义
.string待匹配的文本
.re正则表达式
.pos正则表达式搜索文本的开始位置
.endpos正则表达式搜索文本的结束位置

match对象的方法:

方法含义
.group(0)获得匹配后的字符串
.start()匹配字符串在原始字符串的开始位置
.end()匹配字符串在原始字符串的结束位置
.span()返回(.start(), .end())

5.re库的贪婪匹配和最小匹配

print('re库默认贪婪匹配,输出最长匹配字符串:')
match=re.search(r'py.*n', 'pyanbncndn')
match.group(0)

最小匹配:

操作符含义
*?前一个字符出现0次或者无限次扩展
+?前一个字符出现1次或者无限次扩展
??前一个字符出现0次或者1次扩展
{m,n}扩展前一个字符m到n次(含n次)
print('最小匹配字符串:')
match=re.search(r'py.*?n', 'pyanbncndn')
match.group(0)

该问参考中国大学MOOC课程 《python网络爬虫与信息提取》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值