python3爬虫——正则表达式re详解(1)

来源:互联网 发布:js调用相册 编辑:程序博客网 时间:2024/05/22 05:26

(一)什么是正则表达式
还早呢过这表达式是对字符串操作的一种逻辑公式,就是用实现定义好的一些特定的字符,及这些特定的字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑
ps:正则表达式非python独有,使用re模块即可实现
(二)案例

re.match

语法格式:re.match(pattern,string,flag=0)

最常规的匹配:

最常规的匹配,表示匹配的结果为最原始的,中规中矩的匹配出结果
代码展示:

import recontent = 'Hello 123 4567 World_This is a Regex Demo'print(len(content))result = re.match('^Hello\s\d\d\d\s\d{4}\s\w{10}.*Demo$', content)print(result)print(result.group())print(result.span())

知识点:
(1).group()表示的是返回正则匹配的结果
(2).span()表示返回正则匹配的范围

泛匹配

泛匹配,表示将正则匹配的字符缩短,但得到的是何上方一样的
结果

代码展示:

import recontent = 'Hello 123 4567 World_This is a Regex Demo'result = re.match('^Hello.*Demo$', content)print(result)print(result.group())print(result.span())

知识点:
(1) .* 可以匹配出除去换行以外的任意字符

匹配目标

匹配目标就是将需要的字符匹配出来

代码展示:

import recontent = 'Hello 1234567 World_This is a Regex Demo'result = re.match('^Hello\s(\d+)\sWorld.*Demo$', content)print(result)print(result.group(1))print(result.span())

知识点:
(1)()匹配括号内的表达式,也表示一个组
(2)+ 匹配1个或多个的表达式
* 匹配0个或多个的表达式
(3).group(1)—输出第一个带有()的目标

贪婪匹配

在贪婪匹配中匹配出来的结果有可能不是我们想要的结果

import recontent = 'Hello 1234567 World_This is a Regex Demo'result = re.match('^He.*(\d+).*Demo$', content)print(result)print(result.group(1))

非贪婪匹配

代码展示:

import recontent = 'Hello 1234567 World_This is a Regex Demo'result = re.match('^He.*?(\d+).*Demo$', content)print(result)print(result.group(1))

知识点: 匹配0个或1个由前面的正则表达式定义的片段,为非贪婪方式,匹配尽可能少的字符

匹配模式

当出现换行的时候,.*?*是不适用的,这时
我们需要使用re.s来实现,这样.*就可以代表换行了

代码展示:

import recontent = '''Hello 1234567 World_Thisis a Regex Demo'''result = re.match('^He.*?(\d+).*?Demo$', content, re.S)print(result.group(1))

转义

当有些转移字符出现在字符串中,需要使用’\’来消除他的另外一种含义

代码展示:

import recontent = 'price is $5.00'result = re.match('price is \$5\.00', content)print(result)

ps:以上均为学习崔庆才python3爬虫的学习笔记

原创粉丝点击