跟着我们一起学 Python 30天课程-第19天-正则表达式

作者 : IT 大叔 本文共4056个字,预计阅读时间需要11分钟 发布时间: 2020-08-22

正则表达式(Regex / RegExp)是一个强大的编程概念,并且在所有编程语言中通用。但是通常主要是由初学者发现这令人困惑且难以解释。正则表达式是用于有效搜索搜索字符串的一系列字符模式。当处理诸如搜索,验证或替换文本之类的文本时,它们提供了广泛的用例。

今天,我探讨了如何在Python中使用正则表达式。

正则表达式(简称为regexregexp,也称为有理表达式)是定义搜索模式的一系列字符。通常,字符串搜索算法会将此类模式用于字符串的“查找”或“查找并替换”操作,或用于输入验证。它是在理论计算机科学和形式语言理论中开发的技术。(维基百科)。

根据我以前编写JavaScript程序的经验,我已经熟悉正则表达式。此外,网络上还有大量关于正则表达式的惊人资源。我今天的意图是检查在Python中使用它们的语法和方法,因为知道在以后的几天中构建项目时,如何在Python中使用正则表达式将非常方便。因此,在本文中,我整理了一些与正则表达式相关的重要资源,以及一些实用的编码练习,以后可以作为参考。它也可能对任何发烧友有所帮助。无需记住每一个正则表达式规则,因为它们始终可以根据需求进行谷歌搜索,并且最常见的正则表达式模式都可以使用,因此我们大多数时候不需要自己创建复杂的正则表达式模式。

但是,了解如何读取正则表达式模式是一项很棒的技能,它有助于理解模式的基本功能。

这是一些特定于Python的很酷的正则表达式资源

练习和测试正则表达式Regex101是一个很好的学习场所。它还有助于生成等效的Python regexp模式

Python中的Regex方法

要在Python中使用正则表达式,re需要导入一个内置模块。该模块提供了几种使用正则表达式的方法

Function Description
re.search Check if given pattern is present anywhere in input string
Output is a re.Match object, usable in conditional expressions
r-strings preferred to define RE
Use byte pattern for byte input
Python also maintains a small cache of recent RE
re.fullmatch ensures pattern matches the entire input string
re.compile Compile a pattern for reuse, outputs re.Pattern object
re.sub search and replace
re.sub(r'pat', f, s) function f with re.Match object as argument
re.escape automatically escape all metacharacters
re.split split a string based on RE
text matched by the groups will be part of the output
portion matched by pattern outside group won’t be in output
re.findall returns all the matches as a list
if 1 capture group is used, only its matches are returned
1+, each element will be tuple of capture groups
portion matched by pattern outside group won’t be in output
re.finditer iterator with re.Match object for each match
re.subn gives tuple of modified string and number of substitutions

代码练习

让我们尝试构建一些代码,以测试构建Python应用程序时regex的各种实际用例。

  • 密码验证器
# 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解释器,这是一个原始字符串。使用原始字符串时,无需转义字符。

  • 从字符串中提取数字
# Program to extract numbers from a string

import re

string = 'Python was introduced in 1992. This is year 2020.'
pattern = '\d+'

result = re.findall(pattern, string)
print(result) # ['1992', '2020']

这些是regex如何在Python中使用的一些基本示例。

以下是一些不错的文章,可提供有关Python正则表达式的更深入信息。

今天就这些。明天我将深入研究Python中的测试技术。我对此感到非常兴奋。

跟着我们一起学 Python 30天课程目录:

  1.  跟着我们一起学 Python 30天课程-第30天-免费Python资源 
  2.  跟着我们一起学 Python 30天课程-第29天-自动化测试 
  3.  跟着我们一起学 Python 30天课程-第28天-ML和数据科学II 
  4.  跟着我们一起学 Python 30天课程-第27天-ML和数据科学I 
  5.  跟着我们一起学 Python 30天课程-第26天-机器学习基础 
  6.  跟着我们一起学 Python 30天课程-第25天-Web 开发进阶
  7.  跟着我们一起学 Python 30天课程-第24天-Web开发基础 
  8.  跟着我们一起学 Python 30天课程-第23天-网页爬虫 
  9.  跟着我们一起学 Python 30天课程-第22天-脚本额外功能Scripting Extras 
  10.  跟着我们一起学 Python 30天课程-第21天-脚本编写基础 
  11.  跟着我们一起学 Python 30天课程-第20天-调试和测试 
  12.  跟着我们一起学 Python 30天课程-第19天-正则表达式 
  13.  跟着我们一起学 Python 30天课程-第18天-文件I / O 
  14.  跟着我们一起学 Python 30天课程-第17天-外部模块External Modules 
  15.  跟着我们一起学 Python 30天课程-第16天-模块基础Module Basics 
  16.  跟着我们一起学 Python 30天课程-第15天-生成器Generators 
  17.  跟着我们一起学 Python 30天课程-第14天-错误处理Error Handling 
  18.  跟着我们一起学 Python 30天课程-第13天-Decorators 
  19.  跟着我们一起学 Python 30天课程-第12天-Lambda Expressions & Comprehensions 
  20.  跟着我们一起学 Python 30天课程-第11天-函数编程Functional Programming基础 
  21.  跟着我们一起学 Python 30天课程-第10天-OOP Missing Pieces 
  22.  跟着我们一起学 Python 30天课程-第9天-OOP Pillars 
  23.  跟着我们一起学 Python 30天课程-第8天-OOP基础知识 
  24.  跟着我们一起学 Python 30天课程-第7天-开发环境搭建(Developer Environment) 
  25.  跟着我们一起学 Python 30天课程-第6天-循环II和函数(Loops II & Functions) 
  26.  跟着我们一起学 Python 30天课程-第5天-条件和循环I(Conditions & Loops I) 
  27.  跟着我们一起学 Python 30天课程-第4天-数据类型III(Data Types III) 
  28.  跟着我们一起学 Python 30天课程-第3天-数据类型II(Data Types II) 
  29.  跟着我们一起学 Python 30天课程-第2天-数据类型I(Data Types I) 
  30.  跟着我们一起学 Python 30天课程-第1天-简介 
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 跟着我们一起学 Python 30天课程-第19天-正则表达式

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论