首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 25-03-02 14:02
  • 2128
  • 8295
blog.csdn.net

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
  • 1

反斜杠(\)充当转义字符。但此处的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.')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

执行结果如下图所示:

在这里插入图片描述

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

import re
  • 1

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

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

该函数通用语法:

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

其中,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安装使用指南
文章知识点与官方知识档案匹配,可进一步学习相关知识
Python入门技能树网络爬虫正则表达式388936 人正在系统学习中
注:本文转载自blog.csdn.net的Jackson@ML的文章"https://jackson.blog.csdn.net/article/details/135129353"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top