Python 正则表达式1 函数基础

正则表达式主要函数

注:表达式指正则表达式,字符串指待处理文本。

函数名称概要
re.match()匹配检查字符串是否符合表达式,返回Match对象
re.search()搜索搜索字符串是否包含表达式,返回Match对象
re.findall()查询查询字符串所有符合表达式,返回列表对象
re.split()分割将字符串按表达式分割多项,返回列表对象
re.sub()替换替换字符串所有符合表达式,返文本对象
re.finditer()查询查询字符串所有符合表达式,返回迭代对象

补充说明:

import re
text = "Hello world, this is a sample text with words of different lengths."# 匹配,检查text是否符合pattern的规则
pattern = r'Hello'
re.match(pattern, text) # 整个文本匹配成功,返回包含"Hello"的匹配对象
pattern = r'world'
re.match(pattern, text) # 整个文本匹配失败,返回None# 搜索,搜索text里面符合pattern的子表达式
pattern = r'world'
re.search(pattern, text) # 表达式搜索成功,返回包含"world"的匹配对象
pattern = r'world1234'
re.search(pattern, text) # 表达式搜索失败,返回None

re.findall()返回字符串列表,无位置信息;re.finditer()相当于返回匹配对象列表,有位置信息。根据是否关注子串位置,选择合适函数。

正则表达式主要用法

为了方便理解,代码里面使用了最简单的正则表达式规则,实际应用会使用更复杂的表达式。

Match

在 Python 的 re 模块中,当成功匹配一个正则表达式时,通常会返回一个 Match 对象。Match 对象包含了关于该次匹配的信息,以及可以对匹配结果进行操作的方法。以下是一些 Match 对象的主要属性和方法:

group():返回匹配到的字符串。
start():返回匹配到的子串在原始字符串中的起始索引。
end():返回匹配到的子串在原始字符串中的结束索引。

匹配或搜索

import re
pattern = r'world'
text = "Hello world, this is a sample text with words of different lengths."
# 使用 match() 函数
match_result = re.match(pattern, text)
if match_result:print("match() found:", match_result.group())
else:print("match() did not find a match")
# 使用 search() 函数
search_result = re.search(pattern, text)
if search_result:print("search() found:", search_result.group())
else:print("search() did not find a match")

输出

match() did not find a match
search() found: world

查询或分割

import re
# 定义正则表达式模式
pattern = r'a'
# 待匹配的字符串
text = "Hello world, this is a sample text with words of different lengths."
# 使用 findall() 函数进行匹配
find_result = re.findall(pattern, text)
# 输出查询结果
print("Matches found:", find_result)
# 使用 split() 函数进行分割
split_result = re.split(pattern, text)
# 输出分割结果
print("Split result:", split_result)

输出

Matches found: ['a', 'a']
Split result: ['Hello world, this is ', ' s', 'mple text with words of different lengths.']

替换

import re
# 定义正则表达式模式
pattern = r'a'
# 待替换的字符串
text = "There are 10 apples and 20 oranges."
# 使用 sub() 函数进行替换
replacement = "aaa"
sub_result = re.sub(pattern, replacement, text)
# 输出替换结果
print("Substitution result:", sub_result)

输出

Substitution result: There aaare 10 aaapples aaand 20 oraaanges.

含位置查询

import re
# 定义正则表达式模式
pattern = r'a'
# 待匹配的字符串
text = "Hello world, this is a sample text with words of different lengths."
# 使用 finditer() 函数进行匹配
matches = re.finditer(pattern, text)
print(matches)
# 遍历匹配结果并输出位置信息
for match in matches:start_index = match.start()  # 匹配子串的起始索引end_index = match.end()      # 匹配子串的结束索引print(f"Match '{match.group()}' found at positions {start_index} to {end_index}")

输出

<callable_iterator object at 0x000001965C21FF40>
Match 'a' found at positions 21 to 22
Match 'a' found at positions 24 to 25

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

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

相关文章

基于alpha shapes的边缘点提取(matlab)

1、原理介绍 由Edelsbrunner H提出的alpha shapes算法是一种简单、有效的快速提取边界点算法。其克服了点云边界点形状影响的缺点&#xff0c;可快速准确提取边界点。如下图所示&#xff0c;对于任意形状的平面点云&#xff0c;若一个半径为a的圆&#xff0c;绕其进行滚动&…

LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测(Matlab)

LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09; 目录 LSTM-KDE的长短期记忆神经网络结合核密度估计多变量回归区间预测&#xff08;Matlab&#xff09;效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.LSTM-KDE的长短期…

Flutter笔记:Widgets Easier组件库(5)使用加减器

Flutter笔记 Widgets Easier组件库&#xff08;5&#xff09;&#xff1a;使用加减器 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…

机器学习:深入解析SVM的核心概念【三、核函数】

核函数 **问题一&#xff1a;为什么说是有限维就一定存在高维空间可分呢&#xff1f;**原始空间与特征空间为什么映射到高维空间可以实现可分核函数的作用 **问题二&#xff1a;最终怎么得到函数**从对偶问题到决策函数的步骤&#xff1a;结论 **问题三&#xff1a;为什么说特征…

nginx--第三方模块安装上传下载服务

第三方模块安装 准备 cd /usr/local/src/ yum install git -y git clone https://github.com/openresty/echo-nginx-module.git cd nginx-1.24.0 yum -y install perl-devel perl-ExtUtils-Embed zlib-devel gcc-c libtool openssl openssl-devel 编译安装 ./configure \--p…

ZooKeeper知识点总结及分布式锁实现

最初接触ZooKeeper是之前的一个公司的微服务项目中&#xff0c;涉及到Dubbo和ZooKeeper&#xff0c;ZooKeeper作为微服务的注册和配置中心。好了&#xff0c;开始介绍ZooKeeper了。 目录 1.ZooKeeper的基本概念 2.ZooKeeper的节点&#xff08;ZNode&#xff09; 3. ZooKeep…

机器学习之基于Tensorflow(LSTM)进行多变量时间序列预测股价

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 项目简介&#xff1a;机器学习之基于TensorFlow&#xff08;LSTM&#xff09;进行多变量时间序列预测股价 一、项目…

Python量化炒股的获取数据函数—get_fundamentals_continuously()

Python量化炒股的获取数据函数—get_fundamentals_continuously() get_fundamentals()函数只能用于查询某一交易日的股票财务数据信息&#xff0c;如果要查询多个交易日的股票财务数据信息&#xff0c;就要使用get_fundamentals_continuously()函数&#xff0c;语法格式如下&a…

Django数据库创建存储及管理

一、什么是ORM Django的ORM(Object-Relational Mapping)是Django框架中一个非常重要的组件。ORM可以让开发者以面向对象的方式操作数据库,而不需要直接编写SQL语句。 具体来说,Django ORM提供了以下功能: 模型定义:开发者可以在Django应用中定义Python类来表示数据库表,这些…

tensorflow报错

参考 TensorFlow binary is optimized to use available CPU instructions in performance-critical operations._this tensorflow binary is optimized to use availab-CSDN博客 解决Python中cuBLAS插件无法注册问题_unable to register cudnn factory: attempting to re-CS…

45. UE5 RPG 使用元属性(Meta Attributes)以及使用Set by Caller修改伤害

在RPG游戏中&#xff0c;我们是不会直接修改生命值的属性&#xff0c;是因为在修改角色属性时&#xff0c;需要获取角色的属性并进行复杂的计算&#xff0c;所以&#xff0c;我们正常情况下使用元属性&#xff08;Meta Attributes&#xff09;作为计算的中间的媒。在服务器上先…

【讲解下如何解决一些常见的 Composer 错误】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Apache Dubbo知识点表格总结

Dubbo是一个高性能的Java RPC框架&#xff0c;它提供了一系列的功能来支持分布式系统的开发。通常用于微服务之间的服务调用&#xff0c;顺便提一下也是用于微服务之间调用的OpenFeign&#xff0c;OpenFeign是Spring Cloud体系中的一个声明式HTTP客户端&#xff0c;用于简化HTT…

Django知识点总结

因为最近在搞一个Python项目&#xff0c;使用的Django框架。所以快速学习了一下这个web框架。并做一些总结。 Django官网的介绍&#xff1a;Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Built by experience…

Ex1-C6油气化工防爆轮式巡检机器人

Ex1系列防爆轮式巡检机器人整机采用防爆设计&#xff0c;防爆等级为Exd II CT4 Gb。机器人通过无轨3D形态导航技术&#xff0c;结合360度防爆云台和无线防爆充电桩&#xff0c;实现整套防爆标准&#xff0c;可广泛应用于石油、燃气、化工、冶金等II类爆炸环境中&#xff0c;代替…

设计模式:建造者模式

目录 一&#xff0c;概念 二&#xff0c;不使用建造者有什么麻烦 三&#xff0c;格式 一&#xff0c;概念 建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;用于将复杂对象的构建与其表示分离&#xff0c;以便同样的构建过程可以创建不同…

大模型公开可用的模型检查点或 API

文章目录 公开可用的模型检查点或 APILLaMA 变体系列大语言模型的公共 API 公开可用的模型检查点或 API 众所周知&#xff0c;大模型预训练是一项对计算资源要求极高的任务。因此&#xff0c;经过预训练的公开模型检查点&#xff08;Model Checkpoint&#xff09;对于推动大语言…

nginx封禁恶意IP

网络攻击时有发生 TCP洪水攻击、注入攻击、DOS等比较难防的有DDOS等 为了数据安全&#xff0c;防止对手爬虫恶意爬取&#xff0c;封禁IP 一般封禁ip linux server层面封IP&#xff1a;iptablesnginx层面封IP&#xff0c;方式多种&#xff08;但req还是会打进来&#xff0c;让…

21-ESP32-S3实时时钟(RTC)

ESP32-S3实时时钟&#xff08;RTC&#xff09;的使用 ESP32-S3是一款高性能的Wi-Fi和蓝牙集成的系统级芯片&#xff08;SoC&#xff09;&#xff0c;它包含一个实时时钟&#xff08;RTC&#xff09;模块&#xff0c;可以在系统的其他部分关闭时继续运行&#xff0c;以节省电能…

IDEA 申请学生许可证

如果你有学生账号&#xff0c;并且账号是 EDU 结尾的&#xff0c;可以申请 IDEA 的学生许可证。 有效期一年&#xff0c;完全免费。 在界面上输入邮件地址&#xff0c;然后单击按钮提交。 邮件中单击链接 JetBrains 会把一个带有链接的邮件发送到你的邮箱中。 单击邮箱中的…