python语言基础-5 进阶语法-5.4 正则表达式

devtools/2024/11/23 18:34:48/

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。

5.4 正则表达式

5.4.1 正则表达式

正则表达式的概念:

正则表达式的使用:为了使用正则表达式,要进行编译。编译:将符合正则表达式语法的字符串转换成正则表达式特征。

正则表达式的语法:正则表达式语法由字符与操作符构成,如:P(Y|YT|YTH|YTHO)?N,其中()、|与?均为操作符。

正则表达式常用操作符:

  • .,表示任意单个字符;
  • [],字符集,对单个字符给出取值范围,如:[abc]表示要么取a要么取b要么取c,[a-z]表示a到z单个字符;
  • [],非字符集,对单个字符给出排除范围,如:[abc]表示非a或b或c的单个字符;
  • #,前一个字符的0次或无限次扩展,如abc表示ab、abc、abcc、abccc……;
  • +,前一个字符的1次或无限次扩展,如abc+表示abc、abcc、abccc……;
  • ?,前一个字符的0次或1次扩展,如abc?表示ab、abc;
  • |,两边表达式任意一个,如abc|def表示abc、def;
  • {m},扩展前一个字符m次,如ab{2}c表示abbc;
  • {m,n},扩展前一个字符m~n次,如ab{1,2}c表示abc、abbc;
  • ,匹配字符串开头,如:abc表示以abc为首的字符串;
  • , 匹配字符串结尾,如: a b c ,匹配字符串结尾,如:abc ,匹配字符串结尾,如:abc表示以abc为尾的字符串;
  • (),分组标记,内部只能使用|操作符,如(abc)表示abc,(abc|def)表示abc、def;
  • \d,数字,等价于[0-9];
  • \w,单词字符,等价于[A-Za-z0-9]。

正则表达式的语法在各个语言中是通用的。

5.4.2 re库

python中提供了re库来支持正则表达式的使用。re是python的标准库,无须导入。

re库常用的功能函数有:

  • re.search(),在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象;(在字符串中搜索与正则表达式一样的地方)
  • re.Match(),从一个字符串的开始位置起匹配正则表达式,返回match对象;
  • re.findall(),搜索字符串,以列表类型返回全部能匹配的子串;
  • re.split(),将一个字符串按照正则表达式匹配结果进行分割,返回列表类型;
  • re.finditer(),搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象;
  • re.sub(),在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串。

正则表达式的类型是原生字符串类型raw。在使用正则表达式时,通常要使用原生字符串,这样做是为了避免使用普通字符串时需要处理转义字符的问题,而使正则表达式的语法变得臃肿。python中原生字符串的语法如下:

python">a = r'text';  # 在普通字符串前加r标识,即为原生字符串,原生字符串中的所有符号都是不发生转义的。

使用re库做正则匹配时,要注意两种匹配模式:

  • 贪婪匹配:当一个正则表达式与一个给定字符串存在多个匹配时,re库默认取最长匹配,这种匹配方式称为贪婪匹配。
  • 最小匹配:如果要取出的是最短的匹配结果,则称为最小匹配。使用最小匹配要加最小匹配操作符,常用的有:*?,前一个字符0次或无限次扩展,但获取最小匹配;+?,前一个字符1次或无限次扩展,但获取最小匹配;??,前一个字符0次或1次扩展,但获取最小匹配;{m,n}?,前一个字符m~n次扩展,但获取最小匹配。

更多关于re库的用法,可以在使用时详细查找资料。


http://www.ppmy.cn/devtools/136354.html

相关文章

Docker 容器自动启动设置

在 Docker 中,可以通过设置容器的重启策略来实现容器的自动启动。这意味着,当 Docker 守护进程启动时,它可以自动启动特定的容器,无论是因为系统重启还是 Docker 服务本身的重启。 设置容器自动启动 要设置容器自动启动&#xf…

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)

Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三) py2neo 删除 1、连接数据库 from py2neo import Graph graph Graph("bolt://xx.xx.xx.xx:7687", auth(user, pwd), nameneo4j)2、删除节点 # 删除单个节点 node graph.node…

Lua如何连接MySQL数据库?

大家好,我是袁庭新。使用Lua语言如何来连接数据库呢?新哥这篇文章给你安排上。 1 LuaSQL概述 LuaSQL是一个轻量级的Lua到数据库管理系统(DBMS)的接口库,由Kepler Project维护,且是开源的。它提供了一个简…

IDEA2023 创建SpringBoot项目(一)

一、Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。 二、快速开发 1.打开IDEA选择 File->New->Project 2、…

nc网络工具的使用

nc是一个功能强大的网络工具,它可以用于端口扫描,模拟TCP/UDP数据传输,代理端口等。ubuntu14.04默认自带nc工具,windows下需自行下载,一般防病毒软件会认为它有害。下面主要介绍它在linux下的用法。 一.nc扫描某台主机…

如何在matlab中将数据打印到csv格式文件中?

在 MATLAB 中,可以使用 writetable 或 csvwrite 函数将数据打印到 CSV 格式文件中。以下是这两种方法的详细说明和示例。 使用 writetable 函数 writetable 函数适用于将表格数据(table 数据类型)写入 CSV 文件。这种方法更灵活&#xff0c…

springboot基于springboot的智慧医疗采购系统

摘 要 智慧医疗采购系统是一款高效的医疗采购管理工具,集成了员工管理、供应商管理、医疗器械分类、库存监控、财务统计等多功能模块。通过该系统,医疗机构可实现对采购流程的全面控制和优化,确保物资供应及时准确,降低成本&…

微信小程序数据绑定与事件绑定详解:从入门到精通

微信小程序数据绑定与事件绑定详解:从入门到精通 引言 在微信小程序的开发中,数据绑定和事件绑定是构建用户界面的核心概念。它们不仅可以让开发者更高效地管理数据,还能提升用户交互体验。本文将从基础知识入手,逐步深入,讲解数据绑定、事件绑定、事件传参及数据同步的…