当前位置: 首页 > news >正文

正则表达式和re模块

正则表达式(Regular Expression,简称Regex或RegExp)是计算机科学中的一个重要概念,它通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式是对字符串操作的一种逻辑公式,通过事先定义好的一些特定字符以及这些特定字符的组合,来组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。

正则表达式的语法和规则因不同的编程语言和工具而异,但大多数都遵循一些基本的语法和规则。以下是一些常见的正则表达式语法和规则:

字符匹配.匹配除换行符以外的任意字符。

位置匹配^匹配输入字符串的开始位置,$匹配输入字符串的结束位置。

数量词*表示匹配前面的元素零次或多次,+表示匹配前面的元素一次或多次,?表示匹配前面的元素零次或一次。

字符集[]定义字符集,匹配括号内的任意一个字符。

预定义字符类:如\d\w\s等,用于匹配特定类型的字符。

分组和引用:使用圆括号()进行分组,可以将表达式组合为一个子表达式,并可以在后续操作中引用这个子表达式的匹配结果。

re模块

Python 中的 re 模块(Regular Expression 模块)是一个标准库,用于支持正则表达式。正则表达式是一种文本模式,用于匹配字符串中字符组合的模式。它可以帮助你搜索、编辑或操作文本和数据,以实现复杂的文本处理任务。

引入re模块 

import re

re 模块提供了一系列函数和方法来处理正则表达式。以下是一些常用的:

match方法

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

# 导入re模块
import re# 设置正则表达式匹配规则
pattern = re.compile(r'\d+')# 匹配的目标文本,没有匹配到,则终止匹配,由于字母o不是数字,因此,无匹配数据
m1 = pattern.match('one123two456three789')
print(m1)# 参数1:匹配的起始位置,下表数包含
# 参数2:匹配的结束位置,下标数不包含
m1 = pattern.match('one123two456three789', 3, 6)
print(m1.group())  # 通过group查看匹配的数据

search方法

扫描整个字符串并返回第一个成功的匹配。

import repattern = re.compile(r'\d+')# 它是一次匹配,只要找到了一个匹配的结果就返回,不是查找所有匹配的结果
m1 = pattern.search('one123two456three789')
print(m1.group())

findall方法

在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。

import repattern = re.compile(r'[a-z]+')
# findall 方法用于搜索整个字符串,获得所有匹配的结果
result = pattern.findall('hello 123 world 456')
print(result)

spilt方法

通过正则表达式将字符串分割为一个列表。

import restr = 'a,b,c'
print(str.split(','))str1 = 'a,b;; c,d'
pattern = re.compile('[\s\,\;]+')
print(pattern.split(str1))

sub方法

替换字符串中所有匹配正则表达式的子串。

import restring = '<h1 class="test">helloWorld</h1>'
pattern = re.compile(r'\d')# 参数1:替换后的值   参数2:原值
print(pattern.sub('2',string))# 参数3:替换几个
print(pattern.sub('2',string,2))# 分组
string = '<h1 class="test">helloWorld</h1>'# P<classname>为组声明名字,可以通过名字调用该组
pattern = re.compile(r'<(.\d)\sclass="(?P<classname>.*?)">.*?</(.1)>')
print(pattern.search(string).group(1))
print(pattern.search(string).group(2))
print(pattern.search(string).group(3))

compile

 编译一个正则表达式模式,返回一个正则表达式的匹配对象,通过它可以使用匹配对象的方法。

http://www.lryc.cn/news/447161.html

相关文章:

  • 不同的浏览器、服务器和规范对 URL 长度的限制
  • NASA:ATLAS/ICESat-2 L3 A沿线内陆地表水数据V006数据集
  • 数据结构之链表(1),单链表
  • 如何构建鲁棒高性能 Prompt 的方法?
  • 基于Springboot+微信小程序 的高校社团管理小程序(含源码+数据库+lw)
  • Vue 响应式监听 Watch 最佳实践
  • md编辑器语法
  • RabbitMQ常用管理命令及管理后台
  • 从准备面试八股文,感悟到技术的本质
  • 云手机的默认ip地址是什么
  • 对接阿里asr和Azure asr
  • 未来数字世界相关技术、应用:AR/VR/MR;数字人、元宇宙、全息显示
  • 在 Java 中提供接口方法而不是实现接口
  • 伪类选择器
  • 亚信安全天穹5分钟勒索体检 免费试用今起上线
  • 高校竞赛管理系统的设计与实现
  • 物联网行业中通信断线重连现象介绍以及如何实现
  • 新手上路:Anaconda虚拟环境创建和配置以使用PyTorch和DGL
  • centos7系统安装宝塔面板
  • 汽车总线之----J1939总线
  • 基于skopt的贝叶斯优化基础实例学习实践
  • OJ在线评测系统 后端 用策略模式优化判题机架构
  • element ui 精确控制日期控件 date-picker
  • centos7安装指定版本php及扩展
  • 后端-对表格数据进行添加、删除和修改
  • 【学习笔记】手写 Tomcat 七
  • QT开发:详解 Qt 多线程编程核心类 QThread:基本概念与使用方法
  • 【芋道源码】gitee很火的开源项目pig——后台管理快速开发框架使用笔记(微服务版之本地开发环境篇)
  • 设计模式、系统设计 record part01
  • 服务器与普通电脑的区别是什么?