在Python中使用RegEx模块匹配模式和字符串

在Python中使用RegEx模块匹配模式和字符串

阅读更多:Python 教程

介绍

RegEx模块是Regular expressions的缩写。如果您已经在编程方面有了一定的经验,那么您应该已经听过这个术语很多次了。我们使用正则表达式来查找和替换文本,它被用在各种文本编辑器、搜索引擎、文字处理器等中。

换句话说,它可以帮助您匹配您正在寻找的某种模式。

一个很好的例子是,大学网站只允许您使用您的大学邮件地址而不允许使用其他扩展名。

入门

正则表达式模块已经打包在Python里,您不需要单独下载和安装它。

要开始访问它的内容,我们必须先导入该模块。为了导入RegEx模块,我们使用

import re

探索不同的函数

RegEx模块配备有许多函数,了解并知道它们之间的区别是必不可少的。

下面列出了几个您在开始处理Python项目时最常用的重要函数。

示例

re.compile(pattern, flags) #编译要匹配的模式
re.search(pattern, string, flags) #在字符串中搜索精确匹配
re.match(pattern, string, flags) #检查模式和字符串之间是否有匹配
re.split(pattern, string, max, flag) #基于提供的模式分割字符串
re.findall(pattern, string, flag) #使用模式打印所有找到的匹配项
re.finditer(pattern, string, flags) #将字符串作为可迭代对象返回
re.sub(pattern, repl, string, count) #用模式替换字符串
re.subn(pattern, repl, string, count) #与re.sub做相同的事情,但将其以元组(字符串和计数)的形式返回
re.escape(pattern) #转义除ASCII字符以外的所有字符

re.compile和re.match函数

让我们来看一个字符串,比如“Hello world”。现在,让我们找出上述字符串是否存在于字符串“Hello world!How are things going?”中。

为了这样做,我们使用re.compile和re.match函数。

x = re.compile("Hello world")
y = x.match("Hello world! How are things going?")
if (y):
   print("两个字符串匹配")
else:
   print("两个字符串不匹配")

输出

两个字符串匹配

如果您正在想为什么我们不能不使用编译函数就做到这一点,您是正确的!我们可以不使用编译函数就做到这一点。

x = re.match("Hello world","Hello world! How are things going?")
if (y):
   print("两个字符串匹配")
else:
   print("两个字符串不匹配")

输出

字符串匹配

re.split函数

x = re.split("\W+","Hello,World")
print(x)
x = re.split("(\W+)","Hello,World")
print(x)

输出

['Hello', 'World']
['Hello', ',', 'World']

在上面的例子中,“\ W +”基本上表示从左边开始拆分,“+”表示从左向右一直移动直到末尾。当它被包含在括号中,例如情况2,它会拆分并添加标点符号,如逗号。

re.sub和re.subn函数

x = re.sub(r"there","World","Hello there. Python is fun.")
print(x)

x = re.subn(r"there","World","Hello there. Python is fun. Hello there")
print(x)

输出

Hello World. Python is fun.
('Hello World. Python is fun. Hello World', 2)

在上面的例子中,re.sub检查单词“there”是否存在,如果存在就将其替换为“world”。

subn函数做的事情和sub函数一样,但返回一个元组而不是一个字符串,还会添加替换完成的总数。

实际应用例子

使用 RegEx 模块的实际应用/示例之一是验证密码。

  import re
  matching_sequence = r"[0−9]"
  while(True):
     x = input("输入密码 : ")
     r = re.search(matching_sequence,x)
     if (r and len(x)>6):
        print(x + "是一个有效密码")
     else:
        print(x + "不是一个有效的密码。密码必须至少有7个字符,并且至少包含1个数字")
     input("按 Enter 键退出 ")

该程序会检查您是否输入了有效的密码(7个或更多字符且至少包含一个数字)。

结论

您已经学习了 Python 中的 RegEx 模块的基础知识以及其中的各种不同函数。

RegEx 模块还有更多的函数和用途。如果您感兴趣,可以阅读官方文档 https://docs.python.org/3/library/re.html

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程