爬虫(4)——re正则匹配数据

目录

1. re.compile函数

2. re.match函数

3. 其他函数


使用XPath可以从HTML源码中提取数据,但是XPath有局限性,只能在结构化的HTML或XML格式的文档中。正则表达式则比较通用。

1. re.compile函数

语法格式如下:

re.compile(patten,[flags])
#patten:一个字符串形式的正则表达式
#flags:可选参数,re.M为多行模式;re.S表示匹配包括换行符在内的任意字符,等

例如:

import re

obj1=re.compile(r"\d+") #预加载模式正则表达式,匹配数字一次或多次
obj2=re.compile(r"\d{6}") #预加载模式正则表达式,匹配数字六次
str = "a1001010086"
result1 = obj1.findall(str)
result2 = obj2.findall(str)
print(result1)
print(result2)

运行结果如下:

['1001010086']
['100101']

2. re.match函数

re.match在正则中有讲过match()函数的匹配模式,该函数主要尝试从字符串的起始位置匹配,如果起始位置没有匹配成功,返回none,匹配成功则返回一个包含位置的元组类型的数据。

语法格式如下:

re.match(pattern,string,[flags])
#pattern:模式字符串
#string:要匹配的字符串
#flags:可选参数,表示标志位,用于控制匹配方式

例如:

import re #导入模块
pattern = re.compile(r'my_\w+') #模式字符串,匹配以my开头的字符串
string1 = 'MY__SCHOOL my_school' #要匹配的字符串1
string2 = '学校MY__SCHOOL my_school' #要匹配的字符串2
match1 = pattern.match(string1,re.I) #匹配字符串,不需分字母大小写
match2 = re.match(r'my_\w+',string1,re.I)
match3 = pattern.match(string1) #匹配字符串,需分字母大小写
match4 = re.match(r'my_\w+',string1)
match5 = pattern.match(string2,re.I) #匹配字符串,不需分字母大小写
match6 = re.match(r'my_\w+',string2,re.I)
print(match1)
print(match2)
print(match3)
print(match4)
print(match5)
print(match6)

运行结果如下:

None
<re.Match object; span=(0, 10), match='MY__SCHOOL'>
None
None
None
None

可以看到match1和match2的结果不同,我也不太清楚其中缘由(有大佬可以在评论区指点一下)

3. 其他函数

正则表达式(4)_WHJ226的博客-CSDN博客

可以参考本博主的第4篇博文。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值