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

正则表达式和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 re

pattern = re.compile(r'\d+')

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

findall方法

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

import re

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

spilt方法

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

import re

str = 'a,b,c'
print(str.split(','))

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

sub方法

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

import re

string = '<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.kler.cn/news/326911.html

相关文章:

  • 递归算法介绍和【题解】——数楼梯
  • JS设计模式之享元模式:优化对象内存占用的利器
  • 新手教学系列——系统模块划分原则:如何让系统架构更加灵活与高效
  • 解决端口被占用
  • RIP路由(已被淘汰)
  • .net Framework 4.6 WebAPI 使用Hangfire
  • DRF实操——项目部署
  • 支持老挝语语音识别翻译,对着说话的翻译器《老挝语翻译通》app
  • Spring IoC笔记
  • 【Spring】lombok、dbUtil插件应用
  • 【SQL】筛选字符串与正则表达式
  • 07_矩形圆形绘制
  • 责任链模式优化 文章发布的接口(长度验证,敏感词验证,图片验证等环节) 代码,示例
  • Linux云计算 |【第四阶段】RDBMS1-DAY1
  • EZUIKit.js萤石云vue项目使用
  • Golang plugin包教程:创建与管理插
  • MacOS多桌面调度快捷键
  • 1.1.4 计算机网络的分类
  • 一篇文章快速学会docker容器技术
  • 强化学习-python案例
  • 实现简易 vuedraggable 的拖拽排序功能
  • Java入门3——操作符+String
  • 《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024
  • Vue 3 文件编译流程详解与 Babel 的使用
  • [Uninstall] 软件彻底卸载工具的下载及详细安装使用过程(附有下载文件)
  • C#和数据库高级:虚方法
  • 安卓13禁止待机 永不休眠 android13永不休眠
  • JVM基本组成
  • Redis的数据类型常用命令
  • Python 学习入门笔记