page contents

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

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

attachments-2025-02-uLPus0BI67b927d1906c3.jpg正则表达式(通常称为 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编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1742 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1742 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章