正则表达式和re模块

news/2024/9/29 22:16:31 标签: 正则表达式

正则表达式(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.niftyadmin.cn/n/5683818.html

相关文章

63.5 注意力提示_by《李沐:动手学深度学习v2》pytorch版

系列文章目录 文章目录 系列文章目录注意力提示生物学中的注意力提示查询、键和值注意力的可视化使用 show_heatmaps 显示注意力权重代码示例 代码解析结果 小结练习 注意力提示 &#x1f3f7;sec_attention-cues 感谢读者对本书的关注&#xff0c;因为读者的注意力是一种稀缺…

linux kernel Gdb在线调试

一、常用命令 (gdb) i registers (gdb) bt (gdb) print x4 参考 GDB调试Linux内核模块_gdb调试内核模块-CSDN博客 GDB调试命令的基本用法_gdb查看pc的值-CSDN博客 使用GDB查看和修改寄存器的值_gdb查看寄存器的值-CSDN博客

加速 Python for 循环

在使用 Python 进行数据处理和计算时&#xff0c;for 循环是一个非常常见的操作。然而&#xff0c;随着数据量的增加&#xff0c;单纯的 for 循环可能会变得缓慢&#xff0c;导致程序效率低下。那么&#xff0c;有哪些方法可以加速 Python 中的 for 循环操作呢&#xff1f;今天…

WASM实现加密与算法保护

随着互联网技术的发展&#xff0c;Web应用的安全性越来越受到开发者的重视。在Web应用中&#xff0c;客户端加密是一个重要的安全措施&#xff0c;它能够确保数据在传输过程中的安全性。然而&#xff0c;传统的JavaScript&#xff08;JS&#xff09;加密方式存在一个明显的缺点…

计算机毕业论文及毕业设计题目,计算机专业大专本科学位毕业论文题目推荐大全集

目录 一 软件工程方向 二 网络安全方向 三 人工智能与机器学习方向 四 大数据方向 五 云计算与虚拟化方向 六 数据库与信息系统方向 计算机专业的毕业论文或毕业设计题目通常需要结合当前的技术趋势以及个人兴趣来确定。一个好的选题不仅能够体现学生的学术水平和技术能…

工业网关在设备数据采集中的角色-天拓四方

一、引言 在现代化工业生产和管理的浪潮中&#xff0c;设备数据采集已经成为一项至关重要的技术。它不仅能帮助企业实时了解设备的运行状态&#xff0c;还能为生产决策提供有力支持。而在设备数据采集的领域中&#xff0c;工业网关以其独特的功能和优势&#xff0c;发挥着不可…

初识chatgpt

GPT到底是什么 首先&#xff0c;我们需要了解GPT的全称&#xff1a;Generative Pre-trained Transformer&#xff0c;即三个关键词&#xff1a;生成式 预训练 变换模型。 &#xff08;1&#xff09;什么是生成式&#xff1f; 即能够生成新的文本序列。 &#xff08;2&#…

MySQL 之事务详解

想象一下&#xff0c;你正在使用银行App转账&#xff0c;将100元从你的账户转到朋友的账户。这个看似简单的操作&#xff0c;背后其实包含着多个数据库操作&#xff1a; 检查账户余额: 确保你的账户余额足够支付转账金额。 从你的账户扣除100元: 更新你的账户余额。 将100元添…