re库:正则表达式

  正则表达式(Regular Expression, 简称 regex 或 RE)是一种文本模式匹配工具,通常用于字符串的搜索、替换和分割。

常用匹配规则

元字符

模式描述
.匹配任意单个字符(除换行符)。
^匹配字符串的开头。
$匹配字符串的结尾。
*匹配前一个字符0次或多次。
+匹配前一个字符1次或多次。
?匹配前一个字符0次或1次。
{n}精确匹配前一个字符 n 次。
{n,}匹配前一个字符至少 n 次。
{n,m}匹配前一个字符 n 到 m 次。

字符类

模式描述
[abc]匹配字符 “a”、“b” 或 “c”。
[a-z]匹配所有小写字母。
[^abc]匹配除 “a”、“b” 和 “c” 之外的任意字符。

预定义字符类

模式描述
\d匹配任意数字,等价于 [0-9]。
\D匹配任意非数字。
\w匹配字母、数字或下划线,等价于 [a-zA-Z0-9_]。
\W匹配非字母、数字和下划线。
\s匹配空白字符,包括空格、制表符等。
\S匹配非空白字符。

分组和引用

模式描述
()用于分组,可以将一部分模式看作一个整体
|匹配左边或右边的表达式。
\1, \2,…反向引用,用于引用分组匹配的内容。

match

  match方法用于在字符串的开头检查是否有符合特定正则表达式模式的内容。如果字符串的开头部分匹配指定的模式,re.match() 会返回一个匹配对象;否则,返回 None。
方法的定义
result = re.match(pattern, string, flags=0)
参数

  • pattern:要匹配的正则表达式。
  • string:要搜索的字符串。
  • flags(可选):控制匹配方式的标志,例如忽略大小写、启用多行模式等。

返回值

  • 成功匹配:返回一个 Match 对象。
  • 不匹配:返回 None。
import repattern = r"hello"
string = "hello world"result = re.match(pattern, string) 
if result:print("Match found:", result) # Match found: <re.Match object; span=(0, 5), match='hello'>
else:print("No match")

通用匹配

.*
.可以匹配任意字符,*可以匹配前面的字符无限次,他们组合在一起就可以匹配任意字符了。

贪婪与非贪婪

  • 贪婪匹配
    在贪婪匹配下.*会尽可能多的字符。
  • 非贪婪匹配
    非贪婪匹配写法是.*?,匹配尽可能少的字符。

修饰符

修饰符描述
re.I使匹配对大小写不敏感
re.L实现本地化识别匹配
re.M多行匹配,影响^和$
re.S使匹配内容包括换行符在内的所有字符
re.U根据Unicode字符集解析字符
re.X给予更灵活的格式,使正则表达式易于理解

转义匹配

目标字符串包含正则匹配模式的特殊字符时,在此字符前面加反斜线\转义一下即可。

search

seatch方法的定义result = re.search(pattern, string, flags=0)
match方法是从目标字符串开头进行匹配的,会有些不便。search方法在匹配时会扫描整个字符串,然后返回第一个匹配成功的结果,如果扫描完还没有找到符合规则的字符串,就返回None。

findall

findall方法的定义result=re.findall(pattern, string, flags=0)
findall用于在字符串中找出正则表达式模式所匹配的所有子串,并返回一个包含所有匹配结果的列表。如果没有找到匹配项,则返回一个空列表。

sub

sub方法的定义re.sub(pattern, repl, string, count=0, flags=0)
sub方法用于替换字符串中匹配正则表达式模式的所有子串,并返回一个新的字符串。这个方法不会修改原始字符串,而是返回一个新的字符串,其中所有匹配的子串都被替换了。

compile

compile方法的定义re.compile(pattern, flags=0)
compile方法用于编译一个正则表达式模式,返回一个正则表达式对象(也称为模式对象)。这个对象可以用于后续的匹配操作,比如 match()、search()、sub() 等。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot项目报错记录

SpringBoot测试报错&#xff1a;Unable to find a SpringBootConfiguration, you need to use Context 该测试类所在测试包test下的包名和类路径java下的包名不一致导致的 引发以下报错 java.lang.IllegalStateException: Unable to find a SpringBootConfiguration, you need…

VTK知识学习(3)-显示圆柱

1、添加显示控件 前台界面 <WindowsFormsHost x:Name"windowHost" Grid.Row"1"/> 构造函数中添加。 private RenderWindowControl renderWindowControl new RenderWindowControl();public MainWindow(){InitializeComponent();windowHost.Child …

《FreeRTOS的配置与临界段》

目录 1.FreeRTOS配置的重要性 2.初学者使用FreeRTOSConfig.h 文件 3.“INCLUDE_”开始的宏 4.FreeRTOS 中断配置和临界段 4.1 中断简介 4.2 中断优先级分组定义 4.3优先级设置 4.4 重要的中断屏蔽寄存器 一、PRIMASK 和 FAULTMASK 寄存器 二、BASEPRI 寄存器 4.5 F…

Vue:模板 MVVM

Vue&#xff1a;模板 & MVVM 模板插值语法指令语法 MVVMdefineProperty数据代理 模板 Vue实例绑定一个容器&#xff0c;想要向容器中填入动态的值&#xff0c;就需要使用模板语法。模板语法分为插值语法和指令语法。 插值语法 插值语法很简单&#xff0c;使用{{}}包含一…

极简实现酷炫动效:Flutter隐式动画指南第三篇自定义Flutter隐式动画

目录 前言 一、TweenAnimationBuilder 二、使用TweenAnimationBuilder实现的一些动画效果 1.调整透明度的动画 2.稍微复杂点的组合动画 3.数字跳动的动画效果 前言 上两节博客分别介绍了Flutter中的隐式动画的基础知识以及使用隐式动画实现的一些动画效果。当系统提供的隐…

熵基ZKTeco考勤机门禁如何重置密码(适用于大多数彩屏门禁机)

公司的一台门禁忘记密码了打不开&#xff0c;找了很久终于找到了密码重置的方法。 1、断电拆机(机器底部的螺丝,将机器从墙上拿下来) 2、插电重启&#xff08;或者杵下底部reset小孔&#xff09; 3、机器屏幕显示被拆除&#xff08;或右上角红色小感叹号闪烁&#xff0c;后者启…

​基于学习的地铁客流动态预测智能调度方法

1 文章信息 文章题为“A Learning Based Intelligent Train RegulationMethod With Dynamic Prediction forthe Metro Passenger Flow”&#xff0c;该文于2023年发表至“IEEE TRANSACTIONS ON INTELLIGENT TRANSPORTATION SYSTEMS”。文章的核心观点是提出了一种基于学习的智…

RNA-seq 差异分析的点点滴滴(1)

引言 本系列[1])将开展全新的转录组分析专栏&#xff0c;主要针对使用DESeq2时可能出现的问题和方法进行展开。 为何使用未经标准化的计数数据&#xff1f; DESeq2 工具包在接收输入时&#xff0c;期望得到的是未经处理的原始计数数据&#xff0c;比如从 RNA-seq 或其他高通量测…

Python初始环境搭建和Pycharm的安装

Python和PyCharm安装步骤 刚学习Python编程&#xff0c;按照书上的方法安装了Python和PyCharm&#xff0c;并做练习。但是今天PyCharm软件忽然不能使用了&#xff0c;不知道什么原因。于是&#xff0c;将这两个软件全部卸载&#xff0c;在网上查找软件安装方法&#xff0c;重新…

云上拼团GO指南——腾讯云博客部署案例,双11欢乐GO

知孤云出岫-CSDN博客 目录 腾讯云双11活动介绍 一.双十一活动入口 二.活动亮点 &#xff08;一&#xff09;双十一上云拼团Go (二&#xff09;省钱攻略 &#xff08;三&#xff09;上云&#xff0c;多类型服务器供您选择 三.会员双十一冲榜活动 (一)活动内容 &#x…

[ 常用工具篇 ] 使用 kali 实现 ARP 攻击 -- arpspoof 实战详解(ARP欺骗-断网攻击中间人攻击)

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

无人机之飞行管控平台篇

无人机的飞行管控平台是一种基于互联网和物联网技术的智能管理系统&#xff0c;旨在实现对无人机飞行任务的全自动化、全过程化管理。 一、主要功能 飞行计划管理&#xff1a;用户可以通过平台提前设置好无人机的飞行计划&#xff0c;包括起飞时间、航线、飞行高度等信息。平…

C++ 继承

一. 继承的概念与定义 1.1. 继承的概念 继承 (inheritance) 机制是面向对象程序设计 使代码可以复用 的最重要的手段&#xff0c;它允许程序员在 保 持原有类特性的基础上进行扩展 &#xff0c;增加功能&#xff0c;这样产生新的类&#xff0c;称派生类。继承 呈现了面向对象…

【启程Golang之旅】深入理解 Protocol Buffers 及其应用

如果你是 Go 语言的开发者&#xff0c;理解如何在 Go 中使用 Protobuf&#xff0c;将帮助你大幅提升数据传输的效率&#xff0c;并实现更高性能的系统设计。 本篇文章将深入探讨 Go 语言中使用 Protobuf 的基础知识、常见应用以及最佳实践&#xff0c;带你一步步了解如何在项目…

vue3.5+版本 defineProps响应式解构,保留数据响应式

正确写法&#xff1a;直接通过 defineProps 结构可以保留响应式 let {num:numNew} defineProps({num: {} }) console.log(具有响应式,numNew); 错误写法&#xff1a;这样会丢失响应式 const props defineProps({num: {} }) let {num:numNew} props console.log(会丢失响…

直播 鸿蒙5.0面试必修技能之鸿蒙性能优化技术

一&#xff1a;行业分析&#xff1a; PC时代---互联网---移动互联网---大数据/人工智能---物联网 c/c/java/php--- andorid/ios/前端/hadoop(存储)/spark/flink【12-14年】 --- ArkTS 李兴平 hao123.com/ 网站:6w/day 06年 5000w卖给了百度 盛大传奇/ 腾讯 互联…

怎么能更好的通过驾考呢?

充分准备&#xff1a; 提前了解驾考内容和要求&#xff0c;包括理论知识、场地驾驶技能、道路驾驶技能和安全文明驾驶常识等。合理安排学习时间&#xff0c;确保有足够的时间进行学习和练习。理论学习&#xff1a; 认真阅读和理解驾考相关书籍和资料&#xff0c;特别是交通法规…

Notion + Python + scholarly = 超强文献管理助手

摘要&#xff1a;在科研文献管理中&#xff0c;研究人员常常需要维护自己的文献数据库&#xff0c;我使用 Notion-database 作为的文献数据库管理工具&#xff08;开源模板&#xff09;。Notion-based 的方法无法实时更新文章的引用量信息。我结合了 Notion Integration 和 sch…

Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法

Git遇到“fatal: bad object refs/heads/master - 副本”问题的解决办法 起源 让我们从一个常见的Git错误开始&#xff1a; fatal: bad object refs/heads/master - 副本这个错误提示通常意味着Git在引用&#xff08;ref&#xff09;中发现了不一致或损坏的数据。引用是Git用…

LinkedIn怎么养号:2024最新养号技巧揭秘

LinkedIn领英作为全球最大的职场社交平台&#xff0c;是跨境外贸企业与潜在客户、业务伙伴和同事进行交流的重要平台。然而&#xff0c;许多人在注册和使用LinkedIn时&#xff0c;常常会遇到账户受限甚至被封的困扰。想要拥有一个安全稳定的LinkedIn账户&#xff0c;养号是必不…