Python编程技巧 – 使用正则表达式

2023-12-21 16:09:44

Python编程技巧 – 使用正则表达式

Python Programming Skills – Using Regular Expression

By Jackson@ML

Python以其强大的功能高居全球编程软件的榜首。它易于学习和使用,使其成为初学者绝佳语言。此外,Python还用于各种应用程序,包括Web开发、数据分析及人工智能等。

当今时代,越来越多的计算机软件在做模式识别的工作,尤其是语言模式识别,例如对单词及字符模式的识别。

如果能够指定一种模式,以其特定的字符来表示字符、数字和单词的组合,并利于学习,这就相当于一种新的语言范式,当然,这也是一种简单的语言。正则表达式应运而生,可以用很少的代码做很多的事情,可能用一两条语句就能完成复杂代码才能完成的任务。

1. 正则表达式

1) 正则表达式模式示例

正则表达式可以用简单的一系列字符来匹配一个单词,比如:用以下模式与单词”dog”匹配,这很好理解。

Dog

但是,如果单词多了,情况就变得复杂。假设,现在需要由多个匹配字母的组合:

  • 匹配一个字符”D”;
  • 匹配任意数量的“o”,但至少有一个;
  • 匹配一个“g“字符。

正则表达式就类似一个筛子,用特定字符的要求来筛出所需要的字符。
按照上述的需求,下面的正则表达式可以满足要求:

Do+g

但由于加号(+)是特殊字符,不会让正则表达式去匹配加号,而是与前面的o一起形成一个子表达式。因此,上面的正则表达式可以匹配的结果有以下几种情况:

Dog
Doog
Dooog
Doooog

而另一种重要的运算符是星号( * ),它表示零个或多个前面的表达式(字符),因此,表达式Do*g可以匹配以下多个字符串:

Dg
Dog
Doog
Dooooog

… …
请注意以上模式,可以匹配到字符串”Dg”, 但是应该了解,星号( * )是一种表达式修饰符,不可以单独使用。

2)正则表达式匹配模式

Python在 V1.5版本后,增加了re模块, 提供Perl风格的正则表达式;而这个re模块使得Python语言拥有全部的正则表达式功能。

2. 代码示例:匹配电话号码

我们来编写一段程序,在该程序中需要输入电话号码,但必须在输入后验证该号码是否格式正确,那么需要编写“电话号码”的验证函数。

如果电话号码为八位数,区号为前两位,那么可以用井号(#)及以下模式来验证电话号码:
###-####-####

根据正则表达式的语法,按以下代码来编写模式:

\d\d\d-\d\d\d\d-\d\d\d\d

反斜杠(\)充当转义字符。但此处的d不是使它变为文字字符,而是让它具有特殊含义。
子表达式\d表示匹配任何一位数字字符。

按以上电话号码的模式,编写一个验证电话号码的正则表达式模式,代码如下:

import re

pattern = r'\d\d\d-\d\d\d\d-\d\d\d\d' 
str = input('Enter your telephone number:')

if re.match(pattern, str):
    print('The number accepted!\nYour number is: ' + str)
else:
    print('Incorrect number! Try again.')

执行结果如下图所示:

在这里插入图片描述

该程序首先导入正则表达式软件包re, 对于Python的扩展库的导入,使用以下命令:

import re

re.match尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none.

换句话说,程序中的match函数被re调用,并且使用pattern参数和目标字符串(str)进行比较。如果匹配,那么该函数返回一个match对象;否则返回none。(none可以被转换成布尔值false)。

该函数通用语法:

re.match(pattern, string, flags=0)

其中,pattern为匹配的正则表达式; string为要匹配的字符串;flags为标志位,用于控制正则表达式的匹配方式。如:是否为大小写,多行匹配等。

4. 小结

综上所述,为了匹配正则表达式,将要匹配的字符串进行对比,就能够筛选出需要的字符串;如需改进匹配模式,也可以修正和优化匹配规则,从而得到想要的字符串,达到事半功倍、提高效率的目的。

相关阅读:

  1. Python编程技巧 - 单字符函数
  2. Python编程技巧 - 使用组合运算符
  3. Python编程技巧 - 异常处理
  4. Python编程技巧 - 迭代器
  5. Python编程技巧 - Lambda函数
  6. Python编程技巧 - 使用字典
  7. Python编程技巧 - 使用字符串(Strings)
  8. Python编程技巧 - 对象和类
  9. Python编程技巧 - 使用列表(Lists)
  10. Python编程技巧 - 转换二进制、八进制和十六进制的函数
  11. Python编程技巧 - 函数入门
  12. 安装Visual Studio Code来安装Python应用程序
  13. Python编程技巧 - 安装最新版PyCharm来开发Python应用程序
  14. 2023最新版Python 3.12.0安装使用指南

文章来源:https://blog.csdn.net/jackson_lingua/article/details/135129353
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。