Python 30 天 – 第 19 天 – 正则表达式(如何在 Python 中使用正则表达式)
本文是 30 天 Python 挑战系列的一部分。您可以在此处找到本系列之前所有帖子的链接
- Python 30 天 – 第一天 – 简介
- Python 30 天 – 第 2 天 – 数据类型 I
- Python 30 天 – 第 3 天 – 数据类型 II
- Python 30 天 – 第 4 天 – 数据类型 III
- Python 30 天 – 第 5 天 – 条件和循环 I
- Python 30 天 – 第 6 天 – 循环 II 和函数
- Python 30 天 – 第 7 天 – 开发者环境
- Python 30 天 – 第 8 天 – OOP 基础知识
- Python 30 天 – 第 9 天 – OOP 支柱
- Python 30 天 – 第 10 天 – OOP 丢失的碎片
- Python 30 天 – 第 11 天 – 函数式编程
- Python 30 天 – 第 12 天 – Lambda 表达式和理解
- Python 30 天 – 第 13 天 – 装饰器
- Python 30 天 – 第 14 天 – 处理错误
- Python 30 天 – 第 15 天 – 生成器
- Python 30 天 – 第 16 天 – 模块基础
- Python 30 天 – 第 17 天 – 外部模块
- Python 30 天 – 第 18 天 – 文件 I/O
正则表达式 (Regex/RegExp) 是一个强大的编程概念,在所有编程语言中都是通用的,但对于大部分初学者经常很难理解和困惑。正则表达式是用于高效搜索字符串的字符模式序列。在处理文本(例如搜索、验证或替换文本)时,它们提供了广泛的用例。
今天我探索了如何在 Python 中使用正则表达式。
根据我之前编写 JavaScript 程序的经验,我已经熟悉正则表达式。此外,网络上有大量关于正则表达式的资源。我今天的目的是检查在 Python 中使用它们的语法和方法,因为知道如何在 Python 中使用正则表达式将在未来几天构建项目时非常方便。所以我在这篇文章中汇总了一些与正则表达式相关的重要资源,以及一些实用的编码练习,我可以在将来用作参考。它也可能对任何爱好者有所帮助。没有必要记住每一个正则表达式规则,因为它们总是可以根据要求在 Google 上搜索,并且最常见的正则表达式模式很容易获得,所以我们大部分时间不需要自己创建复杂的正则表达式模式。
然而,了解如何阅读正则表达式模式是一项很好的技能,它有助于理解模式的基本功能。
Python 中的正则表达式方法
要在 Python 中使用正则表达式,需要导入一个内置模块 re。该模块提供了几种使用正则表达式的方法。
这是一个很好的资源,列出了Python 提供的所有正则表达式方法及其用例。
代码练习
让我们尝试构建一些代码来测试正则表达式在构建 Python 应用程序中的各种实际用例。
密码验证器
# Prompts user to enter a password and validates it
# Criteria:
# Min 8 characters
# Only alphabets, numbers and @$!%*?& allowed
# should have atleast 1 uppercase character
# should have atleat 1 lowercase character
# should have atleast 1 special character
# should have atleast 1 number
import re
def password_checker():
password = input('Please enter a password')
password_pattern = re.compile(
r"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$"
)
result = re.fullmatch(password_pattern, password)
if result:
print('Valid password')
else:
print('Invalid password')
password_checker()
可以使用 switch 语句使上述代码更具交互性,以单独检查条件并在任何条件失败时显示单个错误。如果上面的正则表达式看起来令人困惑,请尝试将其复制到regex101。它会将正则表达式分解为带有解释的块。
我更喜欢使用 compile 方法来存储正则表达式模式作为参考,以便以后使用。它返回一个正则表达式对象。
正则表达式字符串之前的 r 告诉 Python 解释器它是一个原始字符串。对于原始字符串,不需要转义字符。
从字符串中提取数字,
# 从字符串中提取数字的程序
import re
string = 'Python was introduced in 1992. This is year 2020.'
pattern = '\d+'
result = re.findall(pattern, string)
print(result) # ['1992', '2020']
这些是如何在 Python 中使用正则表达式的一些基本示例。
这就是今天的全部内容。明天我将深入研究 Python 中的测试技术。我对此感到非常兴奋。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!