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

发布于:2022-12-22 ⋅ 阅读:(447) ⋅ 点赞:(0)

文章末尾给大家留下了大量的福利

前言

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

 

一、re模块的使用

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

1、re.match函数

  • 参数说明:接收两个参数, 第一个是匹配的规则, 第二个是匹配的目标字符串,
  • re.match尝试从字符串的起始位置匹配一个模式,匹配成功 返回的是一个匹配对象(这个对象包含了我们匹配的信息),如果不是起始位置匹配成功的话,match()返回的就是空。

案例:

2、re.search方法

  • 参数说明:接收两个参数, 第一个是匹配的规则, 第二个是匹配的目标字符串,
  • re.search 扫描整个字符串并返回第一个成功的匹配。

案例:

In [21]: s = '123python123'
In [22]: re.search( r ' python' ,s)
out[22]: <re.Match object; span=(3,9),match= 'python'>
In [23]: re.search(r '123 ',s)
out[23]: <re.Match object; span=(0,3),match= '123 '>
In [24]: re.search(r 'aaa ',s)

re.match与re.search的区别

  • re.match从字符串的开始位置进行匹配,如果字符串开始不符合正则表达式,则匹配失败,函数返回空;
  • 而re.search匹配整个字符串,直到找到一个匹配成功的则进行返回,如果整个字符串中都没有找到匹配成功的,则返回空

3、findall方法

  • 参数说明:接收两个参数, 第一个是匹配的规则, 第二个是匹配的目标字符串,
  • 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

案例:

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

4、sub方法

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

re.sub(pattern, repl, string, count=0 )
  • 参数: pattern:匹配的规则; repl:匹配之后替换的新内容; string:需要按规则替换的字符串; count:替换的次数,可以不传参,默认替换所有符合规则的。

案例:

In [31]: s = '123python123python123python123 '
In [32]: re.sub(r ' 123', '666',s,1)
out[ 32]: '666python123python123python123'
In [33]: re.sub(r ' 123' , '666 ' ,s)
out[33]: '666python666python666python666'

5、贪婪模式说明:

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

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

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

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

s=" aaaaa12341234aaaaa'
re.search(r ' \di3,}? ',s)
<re.Match object; span=(5,8), match= ' 123 '>

关于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分组匹配到的字符串

总结

天的文章就到这里了,希望这篇文章能够让小伙伴们更好了解python中的使用正则表达,喜欢的小伙伴记得点赞收藏评论加关注哟。

下面是我给大家留下的一些福利,有需要的小伙伴可以私信关键字“资料”获取哟。

项目实战

app项目,银行项目,医药项目,电商,金融

大型电商项目

全套软件测试自动化测试教学视频

300G教程资料下载【视频教程+PPT+项目源码】

​全套软件测试自动化测试大厂面经

​python自动化测试++全套模板+性能测试


网站公告

今日签到

点亮在社区的每一天
去签到

热门文章