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

Ciallo~(∠・ω・ )⌒☆第二十一篇 入门re 正则表达式

在Python中,re模块是用于处理正则表达式的模块。使用re模块,可以通过正则表达式来匹配、查找、替换字符串。

下面是一些re模块常用的方法:

re.match(pattern, string):从字符串的开始位置匹配一个模式,如果匹配成功,则返回一个匹配对象,否则返回None。

result = re.match(r"abc", "abcabcd")
print(result)

输出:

<re.Match object; span=(0, 3), match='abc'>

re.search(pattern, string):在字符串中搜索匹配模式的第一个位置,如果匹配成功,则返回一个匹配对象,否则返回None。

result = re.search(r"abc", "abcabcdabcde")
print(result)

输出:

<re.Match object; span=(0, 3), match='abc'>

re.findall(pattern, string):在字符串中搜索匹配模式的所有位置,并以列表形式返回所有匹配的字符串。

result = re.findall(r"\d{2,4}?", "123456789")
print(result)

输出:

['12', '34', '56', '78']

re.sub(pattern, repl, string):用指定的替换字符串将匹配模式的所有位置替换,然后返回替换后的字符串。

result = re.sub(r"a\dc", "醒醒啦", "a1ca2cda3cde", count=2)
print(result)

输出:

醒醒啦醒醒啦da3cde

此外,还有字符串中的关键词检索:

\W 非 数字 字母 下划线
\d 数字
\D 非数字
\s 空白
\S 非空白
. 任意字符 除了\n 除非使用re.S 可以匹配所有
^ 开头 re.M 可以匹配\n
$ 结尾 re.M 可以匹配\n

 在检索后面可以加上*,+,?使用贪婪匹配:

* 代表有>=0 个
+ 代表有>=1 个
? 代表有 1 个 或者0个

如果不想使用贪婪匹配,那么需要加上非贪婪:

非贪婪: 尽可能匹配少个数

在贪婪模式后方追加一个?

{n} 匹配n次,{m,n} 匹配m-n次,{m,n}? 非贪婪匹配

result = re.findall(r"\d{2,4}?", "123456789")
print(result)

输出:

['12', '34', '56', '78']

[] 匹配其中一个,| 或者,() 分组

result = re.findall(r"[1-9]|[a-z]", "123456789abcdxyzABCDXYZ")
print(result)

输出:

['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'x', 'y', 'z']

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【设计模式】漫谈设计模式
  • 端点安全新纪元:EDR与XDR技术的融合应用
  • 洛谷 P6280 [USACO20OPEN] Exercise G
  • 【vue讲解:ref属性、动态组件、插槽、vue-cli创建项目、vue项目目录介绍、vue项目开发规范、es6导入导出语法】
  • Docker最佳实践进阶(二):Docker Compose容器编排
  • conda 常见使用命令详解
  • 单例模式下的自动内存释放和模板
  • 【C++初阶】:C++入门篇(一)
  • 计算机网络 —— 物理层
  • 了解Android
  • WPF 中,ControlTemplate 和 DataTemplate 是两种不同类型的模板和区别
  • 网络工程师学习笔记(一)
  • Unity Pro安装教程
  • Debezium系列之:记录一次SQLServer数据库数据不采集,恢复采集造成下游承压的情况,以及相对应的详细解决方案
  • USART————单字节串口的发送和发送接收
  • 03Go 类型总结
  • 07.Android之多媒体问题
  • CSS 提示工具(Tooltip)
  • java 多线程基础, 我觉得还是有必要看看的
  • SpriteKit 技巧之添加背景图片
  • uva 10370 Above Average
  • Vue 2.3、2.4 知识点小结
  • vue中实现单选
  • 对超线程几个不同角度的解释
  • 机器学习学习笔记一
  • 聚类分析——Kmeans
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 我与Jetbrains的这些年
  • 2017年360最后一道编程题
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​iOS安全加固方法及实现
  • ​queue --- 一个同步的队列类​
  • #if 1...#endif
  • (2)MFC+openGL单文档框架glFrame
  • (31)对象的克隆
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第6节 (嵌套的Finally代码块)
  • (苍穹外卖)day03菜品管理
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (三)c52学习之旅-点亮LED灯
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (算法二)滑动窗口
  • (一)kafka实战——kafka源码编译启动
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (一一四)第九章编程练习
  • (转)jQuery 基础
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET C# 使用 iText 生成PDF
  • .NET CORE Aws S3 使用
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 表达式计算:Expression Evaluator
  • .NET 读取 JSON格式的数据
  • .NET企业级应用架构设计系列之技术选型
  • .NET上SQLite的连接
  • ??如何把JavaScript脚本中的参数传到java代码段中