python每日学习9:正则表达式

python每日学习9:正则表达式

  • 定义

    • 在Python中,正则表达式是一种用于匹配字符串中字符组合的模式。它被广泛用于执行各种字符串搜索和替换任务。Python提供了内置的re模块,用于处理正则表达式。
  • 常用的元字符

    • \d:匹配一个数字字符。等价于[0-9]。
    • \D:匹配一个非数字字符。等价于非[0-9]。
    • \s:匹配任何空白字符,包括空格、制表符、换页符等。等价于[\f\r\n\t\v]。
    • \S:匹配任何非空白字符,包括空格、制表符、换页符等。等价于非[\f\r\n\t\v]。
    • \w:匹配字母数字字符。
    • \W:匹配非字母数字字符。
  • 字符匹配

    • ?:匹配前面的字符0次或1次。

    • *:匹配前面的字符0次或多次。

    • +:匹配前面的字符1次或多次。

    • . :匹配除’\n’之外的任何单个字符。使用[.\n]匹配包括\n的任何字符。

    • {n}表示n个字符,用{n,m}表示n~m个字符。

    • :将特殊字符转义。

    • A|B可以匹配A或B,所以(P|p)ython可以匹配’Python’或者’python’。

    • ^:表示行的开头。

    • ^\d:表示必须以数字开头。

    • $:表示行的结束。

    • \d$:表示必须以数字结束。

      \d{3}表示匹配3个数字,例如'010'
      \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配 '空格','空格空格','空格空格空格'等;
      \d{3,8}表示3-8个数字,例如'1234567','123','12345'
      综上,该正则表达式可以匹配以任意个空格隔开的带三位区号的电话号码4
      要匹配'010-12345'这样的号码,由于'-'是特殊字符,要用'\'转义,所以可用\d{3}\-\d{3,8}进行匹配。
      
  • 复杂的正则表达式

    • 常用方法

      • [0-9a-zA-Z_]可以匹配一个数字、字母或者下划线。
      • [0-9a-zA-Z_]+可以匹配至少由一个数字、字母或者下划线组成的字符串。
      • [0-9a-zA-Z_]{0, 19}更精确地限制了长度是0-19个字符(最多19个字符)。
    • re模块

      • match方法
        • 定义:match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None(match方法通常会结合if选择结构进行判断)。

        • 格式

          import re 使用前需要先导入re模块
          re.match(r'^\d{3}\-\d{3,8}$', '010-12345')
          调用match方法,左边需要传入一个正则表达式,右边为待匹配的字符串
          如果能匹配上则返回:<_sre.SRE_Match object; span=(0, 9), match='010-12345'>
          re.match(r'^\d{3}\-\d{3,8}$', '010 12345') 无法匹配则返回空,即None
          
      • 切分字符串
        • re模块提供了split方法,可以按照指定的正则表达式进行字符串的切分。

          #无论多少个空格都可以正常分割
          import re
          m=re.split(r'\s+','a  bb c')
          print(m)
          
      • 分组
        m=re.match(r'^(\d{3})\-(\d{3,8})$')
        m.group(0)#默认为0 全部读取
        m.group(1)#读取第一个字串
        m.group(2)#读取第二个字串
        m.groups()#以列表的形式读取
        
      • 贪婪匹配
        • 定义:正则匹配默认是贪婪匹配,也就是匹配尽可能多的字符。

          re.match(r'^(\d+)(0*)$', '102300').groups()
          最终结果:('102300', '')
          
        • 非贪婪匹配:就是尽可能少匹配。

          re.match(r'^(\d+?)(0*)$', '102300').groups()
          最终结果:('1023', '00')
          
      • 编译
        • 定义:如果一个正则表达式要重复使用几千次,出于效率的考虑,可以使用compile方法预编译该正则表达式,接下来重复使用时就不需要编译这个步骤了,直接匹配。

          import re # 导入模块
          re_telephone = re.compile(r'^(\d{3})-(\d{3,8})$') # 预编译
          re_telephone.match('010-12345').groups() # 进行匹配并返回所有组
          结果为:('010', '12345')
          re_telephone.match('010-8086').groups() # 进行匹配并返回所有组
          结果为:('010', '8086')

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

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

相关文章

前端自动化测试(一):揭秘自动化测试秘诀

目录 [TOC](目录)前言自动化测试 VS 手动测试测试分类何为单元测试单元测试的优缺点优点缺点 测试案例测试代码 测试函数的封装实现 expect 方法实现 test 函数结语 正文开始 &#xff0c; 如果觉得文章对您有帮助&#xff0c;请帮我三连订阅&#xff0c;谢谢&#x1f496;&…

使用MariaDB数据库管理系统

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、数据库管理系统 数据库是指按照某些特定结构来存储数据资料的数据仓库&#xff1b; 数据库管理系统是一种能够对数据库中存放的数据进行建立、修…

Nginx 的升级打怪

1. Nginx 介绍 特点&#xff1a;高性能、高可靠性、内存消耗低、扩展性好、热部署、高并发连接、自由的BSD许可协议。架构&#xff1a;事件驱动 & 异步非阻塞、多进程机制、proxy cache、反向代理。 2. Nginx 安装 具体安装步骤参考作者的另一篇教程。 3. Nginx 目录结…

操作系统——笔记(1)

操作系统是管理计算机硬件资源&#xff0c;控制其他程序运行并为用户提供交互操作界面的系统软件的集合&#xff0c;控制和管理着整个计算机系统的硬件和软件资源&#xff0c;是最基本的系统软件。 常见的操作系统&#xff1a;ios、windows、Linux。 计算机系统的结构层次&am…

css气泡背景特效

css气泡背景特效https://www.bootstrapmb.com/item/14879 要创建一个CSS气泡背景特效&#xff0c;你可以使用CSS的伪元素&#xff08;:before 和 :after&#xff09;、border-radius 属性来创建圆形或椭圆形的“气泡”&#xff0c;以及background 和 animation 属性来设置背景…

Dify中接入GPT-4o mini模型

GPT-4o mini模型自己承认是基于GPT-3.5架构的模型&#xff0c;有图有真相&#xff1a; 一.GPT-4o mini官网简介 GPT-4o mini&#xff08;“o"代表"omni”&#xff09;是小型型号类别中最先进的型号&#xff0c;也是OpenAI迄今为止最便宜的型号。它是多模态的&#x…

hadoop大数据安全管理:ldap、keberos、ranger

hadoop大数据中认证一般用keberos&#xff0c;授权用ranger&#xff0c;kerberos和Ldap组件共同组成整个集群的安全鉴权体系&#xff0c;Ldap负责用户数据存储。 kerberos Kerberos 是一种网络认证协议&#xff0c;用于在不安全的网络中以安全的方式对用户和服务进行身份验证。…

Docker中安装的postgresql14在启用vector扩展的时候,找不到该扩展的控制文件。

ERROR: could not open extension control file “/usr/share/postgresql/14/extension/vector.control”: No such file or directory 进入容器 docker exec -it CONTAINER ID /bin/bash 1.更新 apt-get apt-get update 2.安装插件 #不同版本对应修改数字即可 apt-get i…

vue 当前页面刷新 provide + inject

1. 在App.vue 文件里写入provide 方法 <script setup></script><template><a-config-provider :locale"localezhCN" :autoInsertSpaceInButton"false"><el-config-provider :locale"locale"><router-view v-w…

【MySQL】Ubuntu22.04 安装 MySQL8 数据库详解

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《C》 《Linux》《MySQL》《Qt》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 一、安装目录 1.1 更新软件源 sheepAron:/root$ sudo apt update1.2 安装mysql_ser…

Spring之Spring Bean的生命周期

Spring Bean的生命周期 通过BeanDefinition获取bean的定义信息调用构造函数实例化beanBean的依赖注入处理Aware接口&#xff08;BeanNameAware、BeanFactoryAware、ApplicationContextAware&#xff09;Bean的后置处理器BeanPostProcessor-前置初始化方法&#xff08;Initiali…

UE4 自动换行——按排序关键字1.2.3.

要自动换行的字符串举例&#xff1a;“有效节点为:1.demo-worker-02 2.demo-worker-01 3.demo-master-01” 1.获取相邻两位字符串&#xff0c;组合后与关键字比较 2.当两位字符串与关键字相等&#xff0c;附加一次换行 3.其他例如 1)2)3)、(1)(2)(3)、<1><2><…

达梦修改数据库实例位置

当前数据库实例在/opt/dmdbms/data/DAMENG目录下 需要移动到/data/DAMENG目录下 1. 停止数据库服务 [rootlocalhost ~]# systemctl stop DmServiceDM.service 2. 将原有的数据库实例复制到新的路径下 [dmdbalocalhost ~]$ cp -r /opt/dmdbms/data/DAMENG/ /data/ 3. 修改d…

SAP 高级退货操作简介

什么是 SAP 高级退货(Advanced Returns Management)? 高级退货管理的组成部分退货请求管理物流处理报告和分析业务场景模拟操作步骤高级退货管理配置路径SAP 高级退货管理(Advanced Returns Management,ARM)是 SAP ERP 系统中的一个模块,专门用于管理和优化退货流程。该…

springboot配置文件如何读取pom.xml的值

比如想读取profile.active的值&#xff0c;默认属性为pro 在maven中加入以下插件&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version>&l…

goenv丝滑控制多版本go

安装 先装下goenv brew install goenv去 ~/.bash_profile 添加一下 export GOENV_ROOT"$HOME/.goenv" export PATH"$GOENV_ROOT/bin:$PATH" eval "$(goenv init -)"执行一下让配置生效 source ~/.bash_profile插一嘴&#xff0c;如果之前是在…

保持形态真实性的大脑生成建模| 文献速递-基于人工智能(AI base)的医学影像研究与疾病诊断

Title 题目 Realistic morphology-preserving generative modelling of the brain 保持形态真实性的大脑生成建模 01 文献速递介绍 医学影像研究通常受到数据稀缺和可用性的限制。治理、隐私问题和获取成本都限制了医学影像数据的访问&#xff0c;加上深度学习算法对数据的…

(十九)原生js案例之h5地里位置信息与高德地图的初使用

h5 地里位置信息 1. 获取当前位置信息 window.onload function () {const oBtn document.querySelector("#btn");const oBox document.querySelector("#box");oBtn.onclick function () {window.navigator.geolocation.getCurrentPosition(function (…

SQL每日一题:游戏玩法分析 I

题干 活动表 Activity&#xff1a; --------------------- | Column Name | Type | --------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | --------------------- 在 SQL 中&#xff0c;表的主键是 (player_id, eve…

49 IRF 经典案例

49 IRF 经典案例 一 H3C-FWW-RF 脚本 <IRF-MATER-FW1000>display current-configuration #version 7.1.064, Alpha 7164 #sysname IRF-MATER-FW1000 # context Admin id 1 #telnet server enable #irf mac-address persistent timerirf auto-update enableundo irf l…