当前位置:首页>python>Python 正则表达式入门:一篇文章搞懂核心用法

Python 正则表达式入门:一篇文章搞懂核心用法

  • 2026-08-24 18:38:00
Python 正则表达式入门:一篇文章搞懂核心用法
关注+星标,每天学习Python新技能

来源:网络

正则表达式(通常称为 regex)是一种强大的工具,广泛用于文本处理和模式匹配。在 Python 中,re 模块提供了丰富的正则表达式功能,使开发者能够高效处理复杂的文本, 在本文中,我们将从基础开始后续逐步深入学习正则表达式,并通过实用的代码示例演示如何在 Python 中使用它。

正则表达式的基础知识

正则表达式是定义搜索模式的字符序列,它们可用于各种任务,例如搜索、编辑和作文本。

在本节中,让我们探索正则表达式的一些基本组成部分。

文本

文本是正则表达式模式的最简单形式,因为它们与搜索字符串中的确切字符匹配。

例如,如果要在文本“The cat sat on the mat”中找到确切的单词“cat”,则必须使用与模式 cat 匹配的文本。

元字符

在正则表达式中,元字符是具有特殊含义和用途的符号:

  • • .匹配任何字符,但换行符除外。

  • • ^匹配字符串的开头。

  • • $匹配字符串的结尾。

  • • *匹配前一个元素的 0 个或多个重复项。

  • • +匹配前一个元素的 1 个或多个重复项。

  • • ?匹配前一个元素的 0 或 1 个重复项。

  • • {}匹配前一个元素的特定重复次数。

字符类

字符类匹配给定集中的任何字符。常见示例包括:

  • • [abc]:匹配任何字符 a、b 或 c。

  • • \d匹配任何数字(相当于 [0-9])。

  • • \w匹配任何单词字符(字母数字加下划线)。

  • • \s匹配任何空白字符。

量词

量词指定字符或组的出现次数:

  • • *:0 或更大。

  • • +:1 或更多。

  • • ?:0 或 1。

  • • {n}:正好 n。

  • • {n,}:n 或更多。

  • • {n,m}:在 n 和 m 之间。

Python 中的模块re

re是python中的标准模块,我们可以直接使用,不需要进行安装,接下来我们将展示如何使用该模块的一些基本实例。

re.search()

该函数在字符串中搜索正则表达式模式的第一个匹配项。

例如,假设要提取字符串中的任何数字。我们可以编写以下 Python 代码:

import re

# Define the pattern
pattern = r"\d+"
# Define the text to analyz
text = "There are 123 apples."
# Apply the regex
match = re.search(pattern, text)
print(match.group())

运行结果:

123

让我们解释下pattern = r"\d+"

  • • 前缀定义了一个原始字符串,该字符串将反斜杠 () 视为 Literal 字符,而不是转义字符。r\

  • • \d匹配任何数字(相当于 [0-9])。

  • • +表示上一个模式(数字)必须出现一次或多次。
    最后,如果函数找到匹配项,则变量将返回 match 对象。因此,对象的方法返回与找到的模式相对应的子字符串

re.match()

该函数仅在字符串的开头检查匹配项,例如,如果我们想在先前定义的文本字符串的开头搜索数字匹配项,我们可以编写以下内容:

import re

# Define the pattern
pattern = r"\d+"
# Define the text to analyze
text = "There are 123 apples."
# Apply the regex
match = re.match(r"\d+", text)
print(match)

运行结果:

None

在这种情况下,提供的字符串中没有与应用的正则表达式规则的匹配项。

re.findall()

该函数在字符串中查找正则表达式模式的所有匹配项,并在列表中返回输出。
例如,如果你想找到一个字符串中的所有数字模式,你可以写成这样:

import re
pattern = r"\d+"
text = "There are 123 apples in 2 trees."
matches = re.findall(pattern, text)
print(matches)

运行结果:

['123', '2']

在这种情况下,在字符串中找到两个数值表达式。

re.sub()

该函数将匹配的正则表达式模式替换为替换字符串,例如,如果要将 “123” 替换为 “many”:

import re

# Define the pattern
pattern = r"\d+"
# Define the text to analyze
text = "There are 123 apples."
# Apply the regex
replaced_text = re.sub(r"\d+", "many", text)
print(replaced_text)

打印输出:

There are many apples.

请注意,该函数适用于它找到的所有匹配项, 因此,例如,以下代码示例:

import re

# Define the pattern
pattern = r"\d+"
# Define the text to analyze
text = "There are 123 apples in 3 trees."
# Apply the regex
replaced_text = re.sub(r"\d+", "many", text)
print(replaced_text)

输出:

There are many apples in many trees.

如何判断什么时候使用那个功能

re.match()、re.search()、re.findall()比较相似,那么我们什么时候应该使用哪个更合适呢?

  • • re.search()搜索模式与字符串匹配的第一个位置,当需要查找字符串中第一次出现的模式时,无论它位于何处,都可以使用它。

  • • re.match()仅在字符串的开头搜索匹配项,使用它来检查字符串是否以特定模式开头。

  • • re.findall()查找字符串中某个模式的所有匹配项,并将它们作为字符串列表返回,当需要查找字符串中的所有模式匹配项时,请使用它。

长按或扫描下方二维码,免费获取 Python公开课和大佬打包整理的几百G的学习资料,内容包含但不限于Python电子书、教程、项目接单、源码等等

▲扫描二维码-免费领取

推荐阅读

搞懂Python中可迭代对象是否相等,只需这几个技巧

excel-serializer: Excel 世界的 json.dump()/ load(),轻松序列化Python 复杂数据

写出更优雅的代码:搞懂 Python 协议与抽象基类的核心区别

FastAPI 也能可视化搭建?试试这款神器 FastAPI Forge!

点击 阅读原文了解更多

最新文章

随机文章