软件测试|带你了解Python正则表达式模块(二)

简介: 软件测试|带你了解Python正则表达式模块(二)

前言

上篇文章我们讲解了Python re模块的简单使用,本篇文章我们将讲解re模块更高级的用法。

正则表达式量词符号与组

在这里插入图片描述
在这里插入图片描述

组的概念

符号 描述
() 在匹配规则中获取指定数据

贪婪与非贪婪

匹配分为贪婪匹配与非贪婪匹配

  • 0次或多次属于贪婪模式
  • 通过?组合变成非贪婪模式

正则表达式-re模块的函数

  1. findall()

查找字符串中所有(非重复)出现的正则表达式模式,并返回一个匹配列表
语法示例:

findall(pattern, string [,flags])

示例如下:

import re

sentence = 'hello muller, where are you from'
print(re.findall('from\Z', sentence))

print(re.findall('ffrom\Z', sentence))

--------------------------------
输出结果如下:
['from']
[]
  1. search()

使用可选标记搜索字符串中第一次岀现的正则表达式模式。如果匹配成功,则返回匹配对象;如果失败,则返回None
语法示例:

search(pattern, string, flags=0)

示例如下:

import re

sectence = 'i like play football'
result = re.search('(.*) (.*?) (.*)',sectence)
if result:
    print('result.group() :',result.group())
    print('result.group() :',result.group(1))
    print('result.group() :',result.group(2))
    print('result.group() :',result.group(3))
else:
  print('no match!')

------------------------------------------
输出结果如下;
result.group() : i like play football
result.group() : i like
result.group() : play
result.group() : football
  1. group()与groups()
  • group(num)返回整个匹配对象,或者编号为num的特定子组
  • groups():返回一个包含所有匹配子组的元组(如果没有成功匹配,则返回一个空元组)

代码示例如下:

import re

sectence = 'hello messi, i am muller'
result = re.search('hello (.*), i am (.*)', sectence)
print(result.groups())
print(result.group(1))
print(result.group(2))
-----------------------
输出结果如下:
('messi', 'muller')
messi
muller
  1. split()正则替换

根据正则表达式的模式分隔符,split函数将字符串分割为列表,然后返回成功匹配的列表,分隔最多操作max次(默认分割所有匹配成功的位置)
语法如下:

split(pattern, string, max=0)

示例如下:

import re

s = "Long live the PRC"
result1 = re.split("\s", s)
print(result1)

result2 = re.split("\s", s, 3)  # 通过指定 maxsplit 参数来控制出现次数
print(result2)

result3 = re.split("USA", s)
print(result3)
---------------------------------
输出结果如下:
['Long', 'live', 'the', 'PRC']
['Long', 'live', 'the', 'PRC']
['Long live the PRC']
  1. match()

使用带有可选的标记的正则表达式的模式来匹配字符串。如果匹配成功,就返回匹配对象;如果失败,就返回None
语法如下:

match(pattern, string, flags=0)

示例如下:

import re

data = 'hello world'
result = re.match('hello', data)
print(result.group())
------------------
输出结果如下:
hello

总结

本文介绍了re模块的几个常用函数,对Python内置的re模块的介绍就到这里了,后续我们将介绍其他模块的内容,敬请期待哈!

相关文章
|
18天前
|
Python
Python Internet 模块
Python Internet 模块。
118 74
|
2月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
118 63
|
2月前
|
测试技术 Python
手动解决Python模块和包依赖冲突的具体步骤是什么?
需要注意的是,手动解决依赖冲突可能需要一定的时间和经验,并且需要谨慎操作,避免引入新的问题。在实际操作中,还可以结合使用其他方法,如虚拟环境等,来更好地管理和解决依赖冲突😉。
|
2月前
|
持续交付 Python
如何在Python中自动解决模块和包的依赖冲突?
完全自动解决所有依赖冲突可能并不总是可行,特别是在复杂的项目中。有时候仍然需要人工干预和判断。自动解决的方法主要是提供辅助和便捷,但不能完全替代人工的分析和决策😉。
|
30天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
2月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性
|
7月前
|
数据库 Python
Python网络数据抓取(8):正则表达式
Python网络数据抓取(8):正则表达式
70 2
|
7月前
|
自然语言处理 JavaScript 前端开发
Python高级语法与正则表达式(二)
正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
|
7月前
|
安全 算法 Python
Python高级语法与正则表达式(一)
Python提供了 with 语句的写法,既简单又安全。 文件操作的时候使用with语句可以自动调用关闭文件操作,即使出现异常也会自动关闭文件操作。
|
7月前
|
Python
Python使用正则表达式分割字符串
在Python中,你可以使用re模块的split()函数来根据正则表达式分割字符串。这个函数的工作原理类似于Python内置的str.split()方法,但它允许你使用正则表达式作为分隔符。