Python 正则表达式

PythonPythonBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

正则表达式(Regular Expressions),也称为 "regex",是处理字符串的强大工具。它们可以用于以多种方式搜索、编辑和操作文本。在本实验中,你将学习如何在 Python 中使用正则表达式的基础知识。

成就

  • 正则表达式

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/AdvancedTopicsGroup -.-> python/regular_expressions("Regular Expressions") subgraph Lab Skills python/strings -.-> lab-93{{"Python 正则表达式"}} python/importing_modules -.-> lab-93{{"Python 正则表达式"}} python/standard_libraries -.-> lab-93{{"Python 正则表达式"}} python/regular_expressions -.-> lab-93{{"Python 正则表达式"}} end

导入 Re 模块

要在 Python 中使用正则表达式,你需要导入 re 模块。

打开一个新的 Python 解释器会话,并输入以下代码:

python3

在你的 Python 脚本顶部添加以下代码:

import re

编译正则表达式

在使用正则表达式搜索字符串中的模式之前,你需要先编译它。要编译正则表达式,可以使用 re.compile() 函数。

例如,以下代码将编译一个用于在字符串中搜索字母 "a" 的正则表达式:

regex = re.compile(r"a")

请注意,字符串前面的 r 表示这是一个“原始”字符串(raw string),这意味着反斜杠将被视为字面字符而不是转义字符。在处理正则表达式时,通常建议使用原始字符串以避免混淆。

使用 search() 方法

现在你已经编译了一个正则表达式,可以使用 search() 方法在字符串中搜索模式。

例如,以下代码将在字符串 "cat" 中搜索字母 "a":

match = regex.search("cat")
print(match) ## Output: <re.Match object; span=(1, 2), match='a'>

如果找到匹配的模式,search() 方法将返回一个 Match 对象;如果未找到,则返回 None

使用 match() 方法

match() 方法与 search() 方法类似,但它只匹配字符串开头的模式。

例如,以下代码将在字符串 "catdog" 的开头匹配模式 "cat":

regex = re.compile(r"cat")
match = regex.match("catdog")
print(match) ## Output: <re.Match object; span=(0, 3), match='cat'>

使用 findall() 方法

findall() 方法返回字符串中所有匹配模式的实例列表。

例如,以下代码将在字符串 "cat" 中查找所有字母 "a":

regex = re.compile(r"a")
matches = regex.findall("cat")
print(matches)  ## Output: ["a"]

在正则表达式中,你可以使用许多特殊字符来匹配更复杂的模式。以下是一些示例:

  • .(点)匹配任意单个字符
  • * 匹配零个或多个前面的字符
  • + 匹配一个或多个前面的字符
  • ? 匹配零个或一个前面的字符
  • [characters] 匹配方括号内的任意一个字符

使用分组

你可以在正则表达式中使用分组来提取模式的特定部分。分组是通过将模式的一部分用括号括起来创建的。

例如,以下正则表达式将匹配任何以 "cat" 开头并以 "dog" 结尾的单词:

regex = re.compile(r"cat(.*)dog")

然后,你可以使用 Match 对象的 group() 方法来提取由分组匹配的模式部分。例如:

match = regex.search("catdog")
print(match.group(1))  ## Output: "" (空字符串)

match = regex.search("catfooddog")
print(match.group(1))  ## Output: "food"

使用 sub() 方法

sub() 方法允许你用另一个字符串替换字符串中所有匹配模式的实例。

例如,以下代码将字符串 "cat" 中的所有字母 "a" 替换为字母 "b":

regex = re.compile(r"a")
new_string = regex.sub("b", "cat")
print(new_string)  ## Output: "cbt"

使用 split() 方法

split() 方法允许你根据模式拆分字符串。

例如,以下代码将根据空格字符拆分字符串 "cat dog":

regex = re.compile(r" ")
words = regex.split("cat dog")
print(words)  ## Output: ["cat", "dog"]

Regex101

Regex101 是一个在线正则表达式测试工具,允许你针对你选择的字符串测试你的正则表达式。它是调试和开发正则表达式的有用资源,因为它提供了关于正则表达式中匹配和错误的详细信息。

  • https://regex101.com

要使用 Regex101,你可以在 "Regex" 字段中输入正则表达式,并在 "Test String" 字段中输入要测试的字符串。当你输入时,工具会高亮显示字符串中的任何匹配项,并在 "Result" 部分显示任何错误或警告。

除了测试正则表达式外,Regex101 还包括许多有用的功能,例如保存和分享你的正则表达式、常见正则表达式模式的库,以及自定义工具匹配方式的选项。

总的来说,Regex101 是任何在 Python 或其他编程语言中使用正则表达式的人的宝贵工具。

总结

在本实验中,你学习了如何在 Python 中使用正则表达式来搜索、匹配和操作字符串。你学习了如何编译正则表达式,如何使用 search()match()findall()sub() 等方法,以及如何使用特殊字符和分组来匹配更复杂的模式。

希望这对你有帮助!如果你有任何问题,请告诉我。