首页 > 编程 > Python > 正文

Python爬虫之正则表达式的使用教程详解

2020-02-15 23:23:15
字体:
来源:转载
供稿:网友

正则表达式的使用

re.match(pattern,string,flags=0)

re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none

参数介绍:

pattern:正则表达式

string:匹配的目标字符串

flags:匹配模式

正则表达式的匹配模式:


最常规的匹配

import recontent ='hello 123456 World_This is a Regex Demo'print(len(content))result = re.match('^hello/s/d{6}/s/w{10}.*Demo$$',content)print(result)print(result.group()) #返回匹配结果print(result.span()) #返回匹配结果的范围

结果运行如下:

39
<_sre.SRE_Match object; span=(0, 39), match='hello 123456 World_This is a Regex Demo'>
hello 123456 World_This is a Regex Demo
(0, 39)

泛匹配

使用(.*)匹配更多内容

import recontent ='hello 123456 World_This is a Regex Demo'result = re.match('^hello.*Demo$',content)print(result)print(result.group())

结果运行如下:

<_sre.SRE_Match object; span=(0, 39), match='hello 123456 World_This is a Regex Demo'>
hello 123456 World_This is a Regex Demo

匹配目标

在正则表达式中使用()将要获取的内容括起来

使用group(1)获取第一处,group(2)获取第二处,如此可以提取我们想要获取的内容

import recontent ='hello 123456 World_This is a Regex Demo'result = re.match('^hello/s(/d{6})/s.*Demo$',content)print(result)print(result.group(1))#获取匹配目标

结果运行如下:

<_sre.SRE_Match object; span=(0, 39), match='hello 123456 World_This is a Regex Demo'>
123456

贪婪匹配

import recontent ='hello 123456 World_This is a Regex Demo'result = re.match('^he.*(/d+).*Demo$',content)print(result)print(result.group(1))

注意:.*会尽可能的多匹配字符

非贪婪匹配

import recontent ='hello 123456 World_This is a Regex Demo'result = re.match('^he.*?(/d+).*Demo$',content)print(result)print(result.group(1)) 

注意:.*?会尽可能匹配少的字符

使用匹配模式

在解析HTML代码时会有换行,这时我们就要使用re.S

import recontent ='hello 123456 World_This ' /'is a Regex Demo'result = re.match('^he.*?(/d+).*?Demo$',content,re.S)print(result)print(result.group(1))            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表