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

【python学习】python标准库之正则表达式库re的定义、功能和函数,以及正则表达式的元字符和含义

引言

re 库是Python标准库的一部分,不需要额外安装。要使用 re 库,只需在代码中导入它

文章目录

  • 引言
  • 一、re库的定义
  • 二、`re` 库中常用的功能和函数:
    • 2.1 搜索模式
    • 2.2 查找模式
    • 2.3 替换模式
    • 2.4 分割模式
    • 2.5 编译模式
    • 2.6 错误信息
    • 2.7 支持的模式
    • 2.8 匹配对象
  • 三、正则表达式的定义
  • 四、正则表达式的元字符及其含义
    • 4.1 点号 `.`
    • 4.2 星号 `*`
    • 4.3 加号 `+`
    • 4.4 问号 `?`
    • 4.5 竖线 `|`
    • 4.6 括号 `()`
    • 4.7 反斜杠 `\`
    • 4.8 反斜杠后跟数字 `\n`
    • 4.9 美元符号 `$`
    • 4.10 井号 `#`
    • 4.11 双引号 `"`
    • 4.12 单引号 `'`
    • 4.13 花括号 `{n,m}`
    • 4.14 花括号 `{n,}`
    • 4.15 花括号 `{n}`
  • 五、总结(思维导图)

一、re库的定义

re库 是一个内置的库,用于处理正则表达式(Regular Expression)
正则表达式是一种强大的文本处理工具,可以用于搜索、匹配、替换、分割字符串等操作

二、re 库中常用的功能和函数:

2.1 搜索模式

  • re.search(pattern, string, flags=0): 在字符串中搜索正则表达式的匹配
  • re.match(pattern, string, flags=0): 在字符串的开始位置搜索正则表达式的匹配
  • re.fullmatch(pattern, string, flags=0): 在字符串的整个长度上搜索正则表达式的匹配

2.2 查找模式

  • re.findall(pattern, string, flags=0): 在字符串中查找所有匹配正则表达式的子串,并返回一个列表
  • re.finditer(pattern, string, flags=0): 在字符串中查找所有匹配正则表达式的子串,并返回一个迭代器

2.3 替换模式

  • re.sub(pattern, repl, string, count=0, flags=0): 在字符串中替换所有匹配正则表达式的子串
  • re.subn(pattern, repl, string, count=0, flags=0): 在字符串中替换所有匹配正则表达式的子串,并返回替换后的字符串和替换次数

2.4 分割模式

  • re.split(pattern, string, maxsplit=-1, flags=0): 在字符串中根据正则表达式的匹配进行分割,并返回一个列表

2.5 编译模式

  • re.compile(pattern, flags=0): 将正则表达式编译成一个模式对象,以便重复使用

2.6 错误信息

  • re.error: 捕获 re 模块中的错误

2.7 支持的模式

  • re.I: 忽略大小写。
  • re.M: 多行模式,影响 ^$ 的行为
  • re.S: 点号匹配所有字符,包括换行符
  • re.X: 扩展模式,允许正则表达式中包含注释和空白字符

2.8 匹配对象

  • match 对象:表示匹配到的结果。
  • match 对象可以访问 group()start()end()span() 等方法

三、正则表达式的定义

正则表达式(Regular Expression)是一种强大的文本模式匹配工具,它允许你定义一系列字符串的规则,然后使用这些规则来查找、匹配或替换文本中的模式
在正则表达式中,有一些特殊的字符被称为“元字符”(Metacharacters),它们用来表示特殊的字符集、定位点、重复匹配等

四、正则表达式的元字符及其含义

4.1 点号 .

  • 匹配除换行符 \n 之外的所有单个字符

4.2 星号 *

  • 匹配前面的字符零次或多次
  • 例如,a* 匹配 “a”, “aa”, “aaa”, … 以及任何长度的字符串

4.3 加号 +

  • 匹配前面的字符一次或多次
  • 例如,a+ 匹配 “aa”, “aaa”, … 以及任何长度的字符串

4.4 问号 ?

  • 匹配前面的字符零次或一次
  • 例如,a? 匹配 “a” 或 “”

4.5 竖线 |

  • 表示逻辑或,匹配任意一个选项
  • 例如,a|b 匹配 “a” 或 “b”

4.6 括号 ()

  • 用于分组,可以用来组合匹配模式
  • 例如,(a|b)+ 匹配 “aa” 或 “ab” 或 “aaa” 或 “aba” 等

4.7 反斜杠 \

  • 用于转义字符,使其失去特殊含义
  • 例如,\d 匹配一个数字,而 d 则匹配字符 “d”

4.8 反斜杠后跟数字 \n

  • 表示匹配新行,其中 n 是数字,代表换行符的位置
  • 例如,\n 匹配换行符,\0 匹配字符串的结束

4.9 美元符号 $

  • 匹配字符串的末尾
  • 例如,a$ 匹配以 “a” 结尾的字符串

4.10 井号 #

  • 通常用于注释,但不同的编程语言可能会有不同的解释
  • 例如,在Python中,# 用于注释,但在正则表达式中,它没有特殊含义

4.11 双引号 "

  • 在正则表达式中,双引号用于引用字符串,使其作为一个整体进行匹配
  • 例如,"a" 匹配字符串 “a”

4.12 单引号 '

  • 类似于双引号,单引号也用于引用字符串,使其作为一个整体进行匹配
  • 例如,'a' 匹配字符串 “a”

4.13 花括号 {n,m}

  • 匹配前面的字符 nm
  • 例如,a{2,4} 匹配 “aaa” 或 “aaaa”

4.14 花括号 {n,}

  • 匹配前面的字符至少 n
  • 例如,a{2,} 匹配 “aa” 或 “aaaaa” 等

4.15 花括号 {n}

  • 匹配前面的字符恰好 n
  • 例如,a{2} 匹配 “aa”

这些元字符在正则表达式中扮演着关键角色,它们允许你创建复杂的匹配模式,从而有效地处理文本数据
注意:在使用这些元字符时,需要注意它们可能会在不同的编程语言中具有不同的特殊含义

五、总结(思维导图)

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【深度学习入门篇 ②】Pytorch完成线性回归!
  • Ubuntu实战续篇:Apache httpd轻松搭建高效代理服务器
  • Spring AOP 实现 Excel 导出统一处理
  • Linux——公网 IP别名设置,清屏,删除别名,在linux中提供alias永久化的方法,命令历史
  • 【Superset】dashboard 自定义URL
  • ESP32CAM物联网教学11
  • 微服务中的 “服务发现机制” 简介
  • 链接追踪系列-07.logstash安装json_lines插件
  • Redis① —— Redis基础
  • 数据分析_计划
  • 金蝶云苍穹-插件开发(四)GPT开发相关插件
  • 【云岚到家】-day05-6-项目迁移-门户-CMS
  • anaconda安装
  • 简谈设计模式之建造者模式
  • 蓝牙BLE广播
  • ----------
  • ES2017异步函数现已正式可用
  • Java 23种设计模式 之单例模式 7种实现方式
  • jQuery(一)
  • js算法-归并排序(merge_sort)
  • Laravel 中的一个后期静态绑定
  • markdown编辑器简评
  • Netty源码解析1-Buffer
  • rabbitmq延迟消息示例
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 入门到放弃node系列之Hello Word篇
  • 说说动画卡顿的解决方案
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 小程序button引导用户授权
  • 小程序开发中的那些坑
  • 7行Python代码的人脸识别
  • RDS-Mysql 物理备份恢复到本地数据库上
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​DB-Engines 12月数据库排名: PostgreSQL有望获得「2020年度数据库」荣誉?
  • ​决定德拉瓦州地区版图的关键历史事件
  • (145)光线追踪距离场柔和阴影
  • (9)目标检测_SSD的原理
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • (备忘)Java Map 遍历
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (每日一问)基础知识:堆与栈的区别
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原创)可支持最大高度的NestedScrollView
  • (转) RFS+AutoItLibrary测试web对话框
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 中让 Task 支持带超时的异步等待