软件测试|深入理解Python中的re.search()和re.findall()区别

前言

在Python中,正则表达式是一种强大的工具,用于在文本中查找、匹配和处理模式。re 模块提供了许多函数来处理正则表达式,其中 re.search()re.findall() 是常用的两个函数,用于在字符串中查找匹配的模式。本文将深入介绍这两个函数的用法,以及详细的使用示例。

re.search() 函数

re.search() 函数用于在字符串中查找匹配的第一个子串,并返回一个匹配对象。如果找到了匹配,可以通过匹配对象的方法和属性来获取相关信息。

python 复制代码
import re

pattern = r'apple'
text = "I have an apple and a banana."

# 在文本中查找第一个匹配的子串
match = re.search(pattern, text)

if match:
    print("Found:", match.group())  # 获取匹配的子串
    print("Start:", match.start())  # 获取匹配的起始位置
    print("End:", match.end())      # 获取匹配的结束位置
else:
    print("No match found.")

re.findall() 函数

re.findall() 函数用于在字符串中查找所有匹配的子串,并返回一个包含所有匹配结果的列表。

python 复制代码
import re

pattern = r'\d+'  # 匹配一个或多个数字
text = "I have 3 apples and 5 bananas. Total 8 fruits."

# 查找所有匹配的子串
matches = re.findall(pattern, text)

if matches:
    print("Matches:", matches)  # 获取所有匹配的子串列表
else:
    print("No matches found.")

使用示例

  1. 使用 re.search() 查找日期
python 复制代码
import re

pattern = r'\d{2}-\d{2}-\d{4}'  # 匹配日期格式:dd-mm-yyyy
text = "Today's date is 31-08-2023."

match = re.search(pattern, text)

if match:
    print("Date found:", match.group())
else:
    print("No date found.")
  1. 使用 re.findall() 查找所有链接
python 复制代码
import re

pattern = r'https?://\S+'  # 匹配HTTP或HTTPS链接
text = "Here are some links: https://www.example.com and http://google.com"

links = re.findall(pattern, text)

if links:
    print("Links found:", links)
else:
    print("No links found.")
  1. 使用 re.findall() 查找电子邮件地址
python 复制代码
import re

pattern = r'\w+@\w+\.\w+'  # 匹配基本电子邮件地址
text = "Contact us at support@example.com or info@company.net"

emails = re.findall(pattern, text)

if emails:
    print("Email addresses found:", emails)
else:
    print("No email addresses found.")

总结

re.search() 用于查找第一个匹配的子串,而 re.findall() 则用于查找所有匹配的子串。通过在正则表达式模式中定义适当的规则,使得我们可以有效地在文本中查找并处理各种模式。这两个函数是处理文本匹配和搜索的重要工具,在文本处理和数据提取中非常有用。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
Darenm1111 分钟前
JavaScript事件流:冒泡与捕获的深度解析
开发语言·前端·javascript
whltaoin6 分钟前
Java 后端与 AI 融合:技术路径、实战案例与未来趋势
java·开发语言·人工智能·编程思想·ai生态
wjs202414 分钟前
jEasyUI 自定义窗口工具栏
开发语言
二十雨辰27 分钟前
vite与ts的结合
开发语言·前端·vue.js
xiaohanbao0927 分钟前
Transformer架构与NLP词表示演进
python·深度学习·神经网络
亦良Cool39 分钟前
如何部署一个Java项目
java·开发语言
沐知全栈开发1 小时前
JavaScript 输出
开发语言
love530love1 小时前
【笔记】 Podman Desktop 中部署 Stable Diffusion WebUI (GPU 支持)
人工智能·windows·笔记·python·容器·stable diffusion·podman
程序员晚枫1 小时前
Python 3.14正式发布!这5大新特性太炸裂了
python
自学AI的鲨鱼儿2 小时前
ubuntu22.04安装gvm管理go
开发语言·后端·golang