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

news2024/9/19 20:35:56

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安装使用指南

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1326071.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java Swing学生成绩管理系统期末大作业

1.且看界面 (1)登录页(可记住账号密码) (2)注册弹窗页 (3)登录弹窗 (4)还有账号密码错误3次需等待30秒 (5)成绩展示页面(…

【Spring】15 ApplicationContextAware 接口

文章目录 1. 简介2. 作用3. 使用3.1 创建并实现接口3.2 配置 Bean 信息3.3 创建启动类3.4 启动 4. 应用场景总结 Spring 框架提供了许多回调接口,用于在 Bean 的生命周期中执行特定的操作。ApplicationContextAware 接口是其中之一,它允许 Bean 获取对 A…

无代码API集成助力电商平台,提升味分享营销系统效率

无代码开发的革命 在数字化转型的浪潮中,无代码开发正在成为企业提升效率和灵活性的重要工具。特别是在电商领域,高效的客户关系管理(CRM)系统和客户服务系统对于保持竞争力至关重要。无代码API集成方案如何实现电商系统的优化和…

存在重复元素

题目链接 存在重复元素 题目描述 注意点 无 解答思路 根据Set无法存储相同元素的特点判断nums中是否存在重复元素 代码 class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if …

广州华锐互动:VR元宇宙技术为汽车行业带来革命性变化

随着科技的飞速发展&#xff0c;VR元宇宙技术已经深入影响到我们生活的方方面面&#xff0c;汽车行业更是深受其益。这一新兴技术的出现&#xff0c;为汽车行业带来了前所未有的变化。广州华锐互动将VR技术应用于汽车行业&#xff0c;研发了VR汽修培训、3D汽车展厅、特种车辆3D…

JVM内存结构Java内存模型Java对象模型

导图&#xff1a; https://naotu.baidu.com/file/60a0bdcaca7c6b92fcc5f796fe6f6bc9 1.JVM内存结构&&Java内存模型&&Java对象模型 1.1.JVM内存结构 1.2.Java对象模型 Java对象模型表示的是这个对象本身的存储模型,JVM会给这个类创建一个instanceKlass保存在方…

【powershell】Windows环境powershell 运维之历史文件压缩清理

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

什么是文件包含漏洞?文件包含漏洞利用方法及防御技巧

文章目录 文件包含漏洞文件包含漏洞利用方法如何预防文件包含漏洞文件包含漏洞防御技巧网安学习路线 文件包含漏洞 文件包含漏洞是指在程序执行过程中&#xff0c;将外部文件的内容作为程序代码或数据的一部分来执行或使用&#xff0c;从而导致程序行为异常。攻击者可以利用文…

ansible的脚本---playbook剧本

ansible的脚本---playbook剧本 playbook组成部分 1、tasks任务&#xff1a;包含要在目标主机上执行的操作&#xff0c;使用模块定义这些操作&#xff0c;每个任务都是一个模块的调用 2、varlables变量&#xff1a;存储和传递数据&#xff0c;变量可以自定义&#xff0c;可以…

企业 NAS 升级,如何解决 Windows ACL 权限迁移和配置?

数字化转型是当前时代的必然趋势&#xff0c;它对于企业的创新能力和竞争力的提升至关重要。企业数字化发展过程中会产生大量的非结构化数据&#xff0c;旧有的存储已经不能完全满足企业需求。因此&#xff0c;相应的存储基础设施需要升级换代&#xff0c;以适应新的业务发展。…

本地生活团购外卖怎么做?一招教你轻易入行!

如果说今年生意不好做的话&#xff0c;那么年初做本地生活服务这个赛道的现在是喜忧参半。喜的是在本地生活干团购和外卖把钱给挣上了。忧的是官方清退了所有的全国本地生活服务商。通过官方渠道基本是没的玩了。本来还想着干个三五年。实现车子、房子、票子自由。这计划全落空…

【漏洞复现】Dedecms信息泄露漏洞(CVE-2018-6910)

Nx01 产品简介 DesdevDedeCMS&#xff08;织梦内容管理系统&#xff09;是中国卓卓网络&#xff08;Desdev&#xff09;科技有限公司的一套开源的集内容发布、编辑、管理检索等于一体的PHP网站内容管理系统&#xff08;CMS&#xff09;。 Nx02 漏洞描述 DesdevDedeCMS5.7版本中…

FA-238A (MHz范围晶体单元微型低轮廓SMD)

FA-238A是一款额定频率范围至12MHz~50MHz&#xff0c;工作温度和贮存温度范围-40℃~125℃&#xff0c;环境适应性强&#xff0c;频率老化率低至510-6/year&#xff08;最大值&#xff0c;25℃&#xff09;&#xff0c;使用寿命长。FA-238A具有令人惊叹的紧凑外形尺寸&#xff0…

LeetCode 取经之路——第三题-无重复长度的最长子串

&#x1f389;&#x1f389;&#x1f389;今天给大家分享的是一道滑动窗口的OJ题。 3.无重复长度的最长子串 &#x1f61b;&#x1f61b;&#x1f61b;希望我的文章能对你有所帮助&#xff0c;有不足的地方还请各位看官多多指教&#xff0c;大家一起学习交流&#xff01; 动动…

PropTypes 在 React 中的使用心得

在 React 开发中&#xff0c;PropTypes 是一个非常有用的库&#xff0c;用于对组件的属性进行类型检查。它可以帮助我们在开发过程中捕获潜在的错误&#xff0c;提高代码的可靠性和可维护性。本文将介绍 PropTypes 的基本用法和一些使用心得。 一、什么是 PropTypes PropTypes…

Python | Flask测试:发送post请求的接口测试

HTTP/1.1 协议规定的 HTTP 请求方法有OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 几种。POST通常用来向服务端提交数据&#xff0c;主要用于提交表单、上传文件。 HTTP 协议是以ASCII码传输&#xff0c;建立在 TCP/IP 协议之上的应用层规范。规范把 HTTP 请求分为…

Linux服务器 部署飞书信息发送服务

项目介绍&#xff1a; 飞书信息发送服务是指将飞书信息发送服务部署到一个Linux服务器上。飞书是一款企业级的即时通讯和协作工具&#xff0c;支持发送消息给飞书的功能。通过部署飞书信息发送服务&#xff0c;可以方便内网发送信息给外网飞书。 项目代码结构展示&#xff1a; …

Android Jetpack之用Room+ViewModel+LiveData实现增删改查数据(createFromAsset())

文章目录 一、Room简介二、用RoomViewModelLiveData增删改查数据三、下载源码 一、Room简介 Room是Google推出的数据库框架&#xff0c;是一个 ORM (Object Relational Mapping)对象关系映射数据库、其底层还是对SQLite的封装。 Room包含三个主要组件&#xff1a; 数据库类&…

软考学习五部曲

视频学知识 学习知识环节看视频看书都可以&#xff0c;书很厚一本。如果要看完的话要很多时间&#xff0c;所以我觉得还是看视频更快一点&#xff0c;而且视频还可以倍速。我看的那个视频我觉得非常不错&#xff0c;但是我看的视频b站已经下架了看不到了。其他的视频没仔细去看…

掀起全新的互联网直播风潮

随着科技的不断进步和智能手机的普及&#xff0c;无人直播作为一种全新的互联网直播方式&#xff0c;在近些年迅速崛起&#xff0c;并引起了广泛关注。本文将围绕手机无人直播展开探讨&#xff0c;探究其背后的原因以及对社会生活带来的影响。 首先&#xff0c;我们需要明确什…