首页 > 编程语言 >python中提供正则支持的re模块

python中提供正则支持的re模块

时间:2023-05-16 23:00:53浏览次数:38  
标签:字符 pat python re 正则 字符串 匹配

1 re模块的作用

个人觉得就是按照给定的条件,在文本中去寻找匹配对应的字符
re模块十分强大,提供的正则规则也非常多,网上有很多辅助和测试工具,现在有ai就更加方便了,不过一些基础的使用最好还是了解下

2 正则表达式

个人理解,正则表达式就是寻找、匹配的规则或者条件,它是一个字符串的形式
首先,一些普通字符本身就能作为正则表达式与他自身匹配
如在re模块, 'python' 就能匹配'python'
image

如上,match()匹配到就会返回一个object,没有匹配到就是返回None
单纯只是用自身作为条件去匹配自身,在实际工作中用得比较少,通常是在一大串文本信息中找到一小串字符,我们常常需要一些特殊的字符来表示正则

一些特殊字符表示的匹配规则

句点

句点(.),与除换行符以外的其它字符都匹配,而且只与一个字符匹配,不与0或者多个字符匹配。
如 '.ython'可与 'aython'匹配,也可以和'bython'、'eython'匹配,但是不与'ython'、'abython匹配'
image

字符集

用方括号创建一个字符集,这样字符集与其包含的字符都匹配
[ab]ython 可匹配 aython、bython
[a-z] 与小写字母a-z中的任何一个字符都匹配
[A-Z]则是匹配一个大写字母
[a-zA-z0-9]则是匹配一个大写或者一个小写或者一个数字
排除一些字符
[^ab]除去a b外的任何一个字符都匹配
注意,字符集匹配的都是一个字符

二选一和子模式

可与2个匹配规则中的任意一个匹配 就要用2选一的管道字符(|)

image
子模式
对正则字符串内的部分字串做另外的处理
如上面子模式的例子 由于有共同的字符ab,不同的是ab后的匹配规则,也可以有如下表示
image
子模式常与其他模式一起用,如后面的可选模式和重复模式

可选模式和重复模式

可选模式:在子模式前面加上问号,即匹配时可包含可不包含
image

重复模式
(pat)* pat可重复0 1或者多次
(pat)+ pat可重复1或多次
(pat){m,n} pat可以重复m-n次

对特殊字符进行转义

'baidu.com' 可以匹配字符串 baidu.com 。因为包含特殊字符句点(.),它还能匹配baiduacom baidubcom baidudcom baidugcom等文本
如果只想匹配字符串 baidu.com ,需要让特殊字符句点(.)变为普通字符,就像在字符串里面,用反斜杠把特殊字符转化为普通字符一样,正则表达里面也用反斜杠来把特殊字符转义为普通字符
即 'baidu\.com'
注意这里有两个斜杠,首先,baidu.com本身是个字符串,一个斜杠在字符串本身就是特殊字符,要表达出正则需要的一个斜杠,需要用两个斜杠,这是在字符串层面执行的转义 ,\变成
然后,在正则层面,.会把特殊字符句点(.)变成普通字符
正则也可以用原始字符串的形式,就不用字符串层面的转义了
r'baidu.com'
image
image

3 re模块中一些方法

compile(pat) 根据给定的正则字符串创建模式对象
search(pat,string) 根据正则字符串pat 在文本信息中进行匹配 结果为真 返回一个object,结果为假返回None
match(pat,string) 在字符串开头进行匹配
split(pat,string) 根据与正则匹配的字符来分割文本信息
findall(pat,string) 返回一个列表,包括所有的匹配到的子串
sub(pat,replace,string) 将在文本信息中匹配到的结果替换为replace

image
如上 re.compile(pat).search(string) 等价于 re.search(pat,string)
match()函数也是一样

image

image

image

标签:字符,pat,python,re,正则,字符串,匹配
From: https://www.cnblogs.com/MyRecords/p/17406708.html

相关文章

  • Python学习之十三_pip的学习
    Python学习之十三_pip的学习pip的含义pip:pipisthepackageinstallerforPython.YoucanusepiptoinstallpackagesfromthePythonPackageIndexandotherindexes.pip其实就是python的包管理器:PackagesInstallforPython他可以在线安装也可以离线安装......
  • Cypress 踩坑记 - DOM 遮挡
    Cypress是一个非常流行的测试工具,然而实际使用过程中发现一些问题,这里做些记录。问题发现在Cypress下click是非常常用的指令,然而在一些特殊场景下click并不能如想象中那般正常工作。比如现在有一个弹窗,我们需要测试在点击遮罩层时是否可以正常关闭弹窗。测试代码比......
  • An Attempt at Reducing Costs of Disk I/O in Go
    为了实现磁盘上的IO,go语言使用一组IO线程池用来提高CPU的使用率本文是在go语言上尝试了接入了linuxlibaio,并没有发现性能的提升。使用O_DIRECT意味着数据直接到达磁盘上,这将不能有效的利用pagecache用来加速,合并读写请求;O_DIRECT的方式对读写的大小有限制,必须是blocksize大小......
  • Python: 结合多进程和 Asyncio 以提高性能
    动动发财的小手,点个赞吧!简介多亏了GIL,使用多个线程来执行CPU密集型任务从来都不是一种选择。随着多核CPU的普及,Python提供了一种多处理解决方案来执行CPU密集型任务。但是直到现在,直接使用多进程相关的API还是存在一些问题。在本文开始之前,我们还有一小段代码来帮助演......
  • 关于JDK与JRE的区别
    JDK安装路径下的JRE与独立安装的JRE区别:在JDK安装目录下的子文件下,已经默认安装了一个jre。且与独立安装的JRE6所包含的文件几乎完全一样。       JDK里面内置的JRE和独立的JRE是有一点差别的: 在JDK安装文件中包含了一个完整的独立版本的JRE,他会在JDK安装过程中自动被执......
  • Fast-GRPC: 用python轻松开发grpc接口
    简介Fast-GRPC旨在帮助开发者更加轻松快捷地使用Python开发gRPC接口。它的特点包括简化步骤、简单上手、快速开发,同时支持异步和同步代码,以及支持Middleware,灵感来自FastAPI。安装需要python3.7+pipinstallpython-fast-grpc快速上手下面是一个简单的Fast-GRPC示......
  • 大量远程管理工具 mRemoteNG
    这个工具我也是在新的工作中发现的,这个工具很好用,特别在运维和管理大量的远程桌面的时候能用到https://github.com/mRemoteNG/mRemoteNG/releases/download/v1.76.18/mRemoteNG-Portable-1.76.18.26309.zip上面是它的下载地址https://mremoteng.org/download上面是它的下载页面下......
  • .Net Core 实现WebSocket Server 的另外三种方式
    回顾之前已经写过关于《WebSocket原生socket实现》和《.NetCoreWebSocket服务端与客户端完整示例》以及《基于.NetTcpListener实现WebSocketServer通讯》。其中除了《.NetCoreWebSocket服务端与客户端完整示例》外,都是基于自己对Websocket协议的实现,这种实现在生产环境......
  • Vue 报错-4058 ENOENT: no such file or directory的原因和解决办法
    原因是我在上一级目录打开的cmd然后npmrunserve 需要进到app内run一下 ......
  • Django-rest-framework框架
    web应用模式、API接口、接口测试工具postman、如何在浏览器中测试、restful规范、序列化反序列化、基于Django原生编写五个接口、drf介绍和快速使用、drf之APIView源码分析......