python爬虫——正则表达式

正则表达式测试工具:http://tool.oschina.net/regex/
https://www.w3cschool.cn/tools/index?name=reg
python爬虫——正则表达式_第1张图片

常用匹配规则

模式 描述
+ 匹配1个或多个表达式
* 匹配0个或多个表达式
^ 匹配一行字符串开头
$ 匹配一行字符串结尾
. 匹配任意字符
\d 匹配任意数字
\s 匹配任意空白符号
\w 匹配字母、数字及下划线
{n} 精确匹配n个前面的表达式

常用匹配方法

方法 描述
match() 从字符串开头开始,传入要匹配的正则表达式,检测是否有匹配字符串
search() 依次扫描字符串,找到第一个符合的字符串
findall() 搜索整个字符串,返回匹配的使用内容
sub() 去除或修改一些字符串,让匹配更简单
compile() 将正则字符串编译成表达式对象,方便复用

match() 方法

content = 'Hello 123 4567 World_This is a Regex Demo'
# 第一个参数为正则表达式,第二个为要匹配的字符串
result = re.match('^Hello\s(\d+)\s\d{4}\s\w{10}', content)

输出匹配的内容 ——group()
输出匹配的范围——span()

print(result)
print(result.group())
print(result.group(1))  # 子字符串匹配
print(result.span())

结果:


Hello 123 4567 World_This
123
(0, 25)

通用匹配

.* 表示匹配任意字符并无限次匹配

result1 = re.match('^Hello.*Demo$', content)
print(result1.group())

结果:

Hello 123 4567 World_This is a Regex Demo

贪婪匹配 非贪婪匹配
.* .*?
尽可能匹配多的字符 尽可能匹配少的字符
字符串末尾 字符串中

修饰符

修饰符 描述
re.I 匹配不区分大小写
re.S 使.匹配包括换行符在内的所有字符

使用

result = re.match(’^Hello\s(\d+)\s\d{4}\s\w{10}’, content, re.S)

转义匹配

在前面加\, 如\.

sub() 方法

import re

content = '5423dfjDJF:LJ'
# 第一个参数传入匹配值,第二个为替换成的字符串,第三个为原字符串
result = re.sub('\d+', '', content)
print(result)

结果:

dfjDJF:LJ

compile() 方法

import re

content1 = '2016-12-15 12:00'
content2 = '2019-4-23 12:00'
pattern = re.compile('\d{2}:\d{2}')
result1 = re.sub(pattern, '', content1)
result2 = re.sub(pattern, '', content2)
print(result1, result2)

结果:

2016-12-15 2019-4-23

你可能感兴趣的:(python网络爬虫)