提示:re模块(正则表达式)进行目标匹配
文章目录
前言
在实际开发过程中经常会有查找符合某些复杂规则的字符串的需要,比如:邮箱、图片地址、手机号码等,这时候想匹配或者查找符合某些规则的字符串就可以使用正则表达式了。
用途:正则表达式主要是用来检查和匹配字符串,例如从一堆字符串中搜索自己想要的字符串。
常见方法:
match():从头匹配
search():从整个文本搜索
findall():找到所有符合的
split():分割
sub():替换
group():结果转化为内容
groupdict():结果转化为字典
一、re模块匹配字符串的方法
1.1 match()函数
1.1.1 match()使用方法
只从字符串的最开始与pattern进行匹配,下面是函数的语法:
re.match(pattern, string, flags = 0)
参数说明:
•pattern - 匹配规则;
•string - 字符串;
•flags - 可以使用按位OR(|)指定不同的标志;
•re.match 函数在成功时返回匹配对象,失败时返回None。
使用**group(num)或groups()**函数匹配对象来获取匹配的表达式。
其中:可以在匹配规则中增加(),选择输出的匹配结果,如下:
import re
a="GET /huhui.html HTTP1.1"
ret = re.match(r"[^/]+([^ ]*)( HTTP1.1)", a)
>>>ret.group()
>>>'GET /huhui.html HTTP1.1'
>>>ret.group(0)
>>>'GET /huhui.html HTTP1.1'
>>>ret.group(1)
>>>'/huhui.html'
>>>ret.group(2)
>>>' html'
1.1.2 match()函数局限性
match方法匹配规则只能从字符串最开端开始。
1.2 search()函数
1.2.1 search()使用方法
与match()工作的方式一样,但是search()不是从最开始匹配的,而是从任意位置查找第一次匹配的内容。下面是这个函数的语法 :
>>>ret = re.search(r"(/[^ ]*)( HTTP1.1)", a)
>>>ret.group()
>>>'/huhui.html HTTP1.1'
>>>ret.group(0)
>>>'/huhui.html HTTP1.1'
>>>ret.group(1)
>>>'/huhui.html'
>>>ret.group(2)
>>>' html'
1.3 re.findall()函数
1.3.1 re.findall()使用方法
在字符串中找到正则表达式所匹配的所有子串,并返回一个列表。这个函数的语法如下:
>>>ret = re.findall(r"h", a)
>>>ret
>>>['h', 'h', 'h']
>>>type(ret)
>>><class 'list'>
二、re模块匹配字符串的规则
2.1 匹配单个字符规则
代码 | 功能 |
---|---|
. | 匹配任意1个字符(除了\n) |
[ ] | 匹配[ ]中列举的字符 |
\d | 匹配数字,即0-9 |
\D | 匹配非数字,即不是数字 |
\s | 匹配空白,即 空格,tab键 |
\S | 匹配非空白 |
\w | 匹配非特殊字符,即a-z、A-Z、0-9、_、汉字 |
\W | 匹配特殊字符,即非字母、非数字、非汉字 |
2.2 匹配多个字符规则
代码 | 功能 |
---|---|
* | 匹配前一个字符出现0次或者无限次,即可有可无 |
+ | 匹配前一个字符出现1次或者无限次,即至少1次 |
? | 匹配前一个字符出现1次或者0次,即要么有1次,要么没有 |
{m} | 匹配前一个字符出现m次 |
{m,n} | 匹配前一个字符出现从m到n次 |
2.3 其他规则
[^/]匹配不是 / 字符,[^ ]匹配不是空字符。