python爬虫学习20

python爬虫学习20

三、正则表达式

2.match

match是一种常用的匹配方法,向他传入我们需要匹配的字符串以及正则表达式,就可以检测这个正则表达式是否和字符串相匹配。

# match

# 该方法会从字符串的起始位置开始匹配正则表达式,如果匹配,就返回匹配成功的结果;反之,就返回None
import re

content = '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}',content)
print(result)           # 返回匹配后的结果
print(result.group())   # 返回匹配的内容
print(result.span())    # 返回匹配的范围

运行结果:

在这里插入图片描述

下面来详细解析一下案例中用到的正则表达式:

^Hello\s\d\d\d\s\d{4}\s\w{10}

想来想去还是把昨天的图给附上来了,不对着看是真记不住。。。

在这里插入图片描述

开头的^表示匹配字符串的开头,即以Hello开头,\s 表示匹配空白字符(例如 空格 换行符等)这里用来匹配Hello后面的空格。\d 用来匹配任意数字,一个\d匹配一个数字,这里我们加起来用三个\d分别匹配了123。\d{4}就是比较高级(lan ren)的写法了表示匹配4次数字,同理\w{10} 的意思就是匹配字母数字下划线10次。

2-1匹配目标

大概了解match的使用方法后,我们就可以使用match方法从字符串中提取出我们想要的内容了:

# 匹配目标
# 使用()将想要提取的子字符串括起来。()实际上标记了子表达式开始和结束的位置,被标记的子表达式依次对应一个分组(还记得刚刚展示的group字段吗?)
import re

content = 'Hello 1234567 World_This is a Regex Demo'
result = re.match('^Hello\s(\d+)\s', content)
print(result)
print(result.group(1))  # 传入 1 则会返回被第一个括号包住的内容返回的结果,若是有多个括号,那就传入2,3...以此类推
print(result.group())   # 如果不传入参数 返回完整的匹配结果

运行结果:

在这里插入图片描述

2-2通用匹配

刚刚在2-1中我们进行的匹配还是非常繁琐,来一个空格我们就得敲一个\s,有没有更简单的匹配方法呢?

这时候. 与* 就站了出来。他们俩是万能匹配符,.可以匹配除了换行符的任意字符,*代表任意个。所以将他们俩组合起来我们就能匹配任意字符了。

import re

content = 'Hello 1234567 World_This is a Regex Demo'
res = re.match('^Hello.*Demo$', content)
print(res.group())
print(res.span())

运行结果:

在这里插入图片描述

学到这里,虽然还远远没有结束,但是总得给明天的自己一点表现的机会不是
后天的自己过来了并附上了后半部分的传送门

猜你喜欢

转载自blog.csdn.net/szshiquan/article/details/123671003
今日推荐