技能大放送:python 中正则表达式的使用

本贴最后更新于 787 天前,其中的信息可能已经时过境迁

前言:

我们在做接口自动化的时候,处理接口依赖的相关数据时,通常会使用正则表达式来进行提取相关的数据,今天在这边和大家聊聊如何在python中使用正则表达式。在python使用正则表达式,可以使用官方库re来实现

一、re模块的使用

在python中使用正则表达式,需要用到re模块来进行操作,这边给大家介绍几个re模块中常用的方法。

1、re.match函数

案例:

image.png

2、re.search方法

案例:

image.png

re.match与re.search的区别

3、findall方法

案例:

image.png

注意: match 和 search 是匹配一个结果, findall 匹配处所有符合规则的结果。

4、sub方法

替换字符串中的某些字符,可以用正则表达式来匹配被选子串。

re.sub(pattern, repl, string, count=0 )
案例:

image.png

5、贪婪模式说明:

贪婪模式:Python里数量词默认是贪婪的,总是尝试匹配尽可能多的字符;

如下案例:有一个字符串s,我们需要在字符串中匹配3个以上的数字,字符串中数字有8个,贪婪模式会尽可能匹配更多字符,3个以上,8个也是3个以上,那么这里匹配的结果就是8个数字。

image.png

非贪婪模式:总是尝试匹配尽可能少的字符,在"*","?","+","",后面加上?,可以关闭贪婪模式

关闭贪婪模式之后,尽可能获取更少的,如下,只获取到最前面的3个数值(规则时至少3个,非贪婪就是匹配最前面符合规则的3个数组)

image.png

关于re模块,更多的使用方法,本文不做过多的介绍,大家自行研究,谢谢!下面附上正则表达式的基本的匹配供大家参考

二、正则表达式语法

1、表示单字符

单字符:即表示一个单独的字符,比如匹配数字用\d ,匹配非数字使用\D,具体规则如下:

字符 功能
. 匹配任意1个字符(\n除外)
[7a ] 匹配[ ]中列举的字符,这里就是匹配7或者a这两个字符其中的一个
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_
\W 匹配非单词字符

2、表示数量

如果要匹配某个字符多次,就可以在字符后面加上数量进行表示,具体规则如下:

字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现从m到n次

3、表示边界

用来表示字符串或者单词的边界 如字符串开头,单词开头等

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾
\b 匹配单词的边界
\B 匹配非单词边界

4、匹配分组

对匹配的内容做分组处理

字符 功能
(aaa) 将括号中字符作为一个分组
\number 引用分组number匹配到的字符串
(?P<g1>) 分组起别名为g1
(?P=g1) 引用别名为g1分组匹配到的字符串
1 操作
mslemonban 在 2020-08-06 17:55:13 更新了该帖
回帖
请输入回帖内容 ...