Python 30 天 – 第 19 天 – 正则表达式(如何在 Python 中使用正则表达式)

作者 : 慕源网 本文共1958个字,预计阅读时间需要5分钟 发布时间: 2021-10-14 共370人阅读

本文是 30 天 Python 挑战系列的一部分。您可以在此处找到本系列之前所有帖子的链接

正则表达式 (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 中的测试技术。我对此感到非常兴奋。


慕源网 » Python 30 天 – 第 19 天 – 正则表达式(如何在 Python 中使用正则表达式)

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录