首页 > 其他分享 >正则表达式 and re 模块

正则表达式 and re 模块

时间:2023-10-15 17:57:01浏览次数:34  
标签:字符 abc 匹配 正则表达式 re 代表 模块 findall

元字符:

^  $  []  {}  ()  .  \  ?  *  +
^ 只能放在正则表达式的前方,且也只能从目标字符串的首部开始匹配
$ 只能放在正则表达式的后方,且也只能从目标字符串的尾部开始匹配
[] 字符集
{} 匹配字符的长度范围,为一个闭区间
() 其中字符串代表一个整体
. 通配符,可以代表任意一个字符,除‘\n’
\ 转义符,将有意义的字符变得没有意义,反之有意义
* *前方的匹配字符的个数[0,+∞)
+ +前方的匹配字符的个数[1,+∞)
? ?前方的匹配字符的个数[0,1]

[] 字符集

字符集中的元字符没有任何特殊意义,就是普通字符,但'\'和'^'字符和'-'在其中有着特殊意义

\  转义符

\w 代表任何字母和数字
\W 代表任何非字母、数字
\s 代表任何空白,\n、\t、\r、\f、\v
\S 代表任何非空白
\d 代表任何数字
\D 代表任何非数字
\b 代表特殊符号,'空白'、'#'、''
\ \本身代表着转义,可以让有意义的符号变得没意义,例如\\b,此时第二个\就变成了普通字符,当前正则表达式匹配的字符内容是\b

^  非符号

在[]中表示不包括后面的内容

-  范围符号

用法如a-z(表示a到z之间包括a、z的所有字母)、a-b、A-Z、0-9

{}  匹配长度

re.findall(r'abc{0}','abccbaabc')
# re.findall()为re的一个方法,用法是将匹配到的字符串分组
# 这里表示c最小匹配长度为0
# 结果为['ab','ab']

re.findall(r'abc{2}','abccbaabc')
# 结果为['abc']

re.findall(r'abc{0,2}','abccbaabc')
# 0为最小长度,2为最大长度
# 结果为['abcc', 'abc']

 对于单独用的()和[]的个人见解(以下说法全部基于单独用的情况下,如r = r"(abc)*")

()中的字符将作为一个整体,不再为一个个体,这一点很重要!

re.findall(r'(abc)*','abcabcabc')
# 通常我们认为的结果是['abcabcabc']
# 但实则是['abc','']
re.findall(r'(abc)*','abc abc abc')
# ['abc', '', 'abc', '', 'abc', '']
# 我觉得是因为(abc)是一个整体了,导致匹配后abc完整字符后,这让程序认为已经找到了目标字符串从而会直接跳出循环,然后进行下一个组的匹配
# 我们想要正常匹配应该用[abc],字符集的表示让程序认为目标字符不在局限性为abc这个整体,后面可能还有更多的字符
re.findall(r'[abc]*','abcabcabc')
# 结果['abcabcabc',''],缺点就是这样能找到abccbacb这样的字符,[]的用法更像集合一样,用a,b,c,ac,ab,ac,abc这些子集去匹配字符

 

标签:字符,abc,匹配,正则表达式,re,代表,模块,findall
From: https://www.cnblogs.com/lxshbes412/p/17765886.html

相关文章

  • 3-ocserv基于pam_access模块进行用户访问控制
    ocserv基于pam_access模块进行用户访问控制一、配置ocserv的PAM文件打开/etc/pam.d/ocservvim/etc/pam.d/ocserv在默认/etc/pam.d/ocserv配置中的@includecommon-auth下方插入pam_access.so模块进行用户访问控制:authrequiredpam_access.so请确保这行在auth......
  • CF1873F Money Trees
    CF1873FMoneyTrees双指针好题,但是我用的队列(考虑先找出所有极长的、满足任意一个数都能被它后面的那个数整除的连续段。显然这个操作可以在\(\mathcal{O}(n)\)的时间复杂度内完成。求出每个极长连续段的答案,取\(\max\)即为最终答案。那么现在的问题就是求一个数列中,满......
  • CF1872B The Corridor or There and Back Again
    CF1872BTheCorridororThereandBackAgain观察第二组样例的解释,注意这句话:“第二个陷阱限制了你”。这启发我们计算经过每个陷阱之后最多还能向前走到哪里,然后取\(\min\)得到答案。现在的问题是如何求出每个陷阱限制的最远可到达点。由于要求折返,因此对于第\(i\)个......
  • Triangle Graph Interest Network for Click-through Rate Prediction
    目录概TGINMotivation:Triangle的重要性Model代码JiangW.,JiaoY.,WangQ.,LiangC.,GuoL.,ZhangY.,SunZ.,XiongY.andZhuY.Trianglegraphinterestnetworkforclick-throughrateprediction.WSDM,2022.概'图'用于精排,但是这里的图的使用主要是基于......
  • Adobe Prelude 2022「Pl视频编辑软件」中文直装汉化版下载与安装
    AdobePrelude2022是一个超级好用的视频剪辑软件,软件功能非常齐全,可随时对视频进行剪辑操作,用时可对各种视频进行剪辑,增加各种音效,以及使用素材,在用户的使用中可以打开强大的后期操作,如果需要视频剪辑,就可以直接下载AdobePrelude2022汉化版,该剪辑只需添加所需的文字特征,动作改编......
  • Redis缓存系统常见问题及解决方案
    首先了解以下Redis缓存机制Redis缓存基于内存,查询时先进入Redis缓存,如若查询不到,则进入MySQL数据库查询信息。数据库取到则更新缓存并返回结果,否则返回空。   缓存穿透问题什么是缓存穿透当用户在Redis缓存系统执行一条无效查询时,这条无效查询将穿透Redis缓存系......
  • 每个后端都应该了解的OpenResty入门以及网关安全实战
    简介在官网上对OpenResty是这样介绍的(http://openresty.org):“OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。”“......
  • layui的各模块的基本用途是什么?
    Layui是一个流行的前端UI框架,提供了多个模块,每个模块有不同的功能和用途。以下是Layui的一些主要模块以及它们的基本用途:核心模块(layui):Layui的核心模块包含了一些核心函数和全局配置,以及对其他模块的依赖管理。你需要在使用Layui时首先引入这个核心模块。布局模块(lay......
  • hashmap,arrayList,concurrentHashMap扩容机制
    HashMap1.7和1.8扩容机制在Java1.7中,HashMap的扩容机制是当容量超过负载因子与数组长度的乘积时就会进行扩容。默认负载因子为0.75,即当数组长度为n时,当元素个数size超过n*0.75时就会扩容。扩容时,数组长度会变为原来的2倍,并且将原来的元素重新计算哈希值,再散列到新......
  • Dual Graph enhanced Embedding Neural Network for CTR Prediction
    目录概DG-ENNGuoW.,SuR.,TanR.,GuoH.,ZhangY.,LiuZ.,TangR.andHeX.Dualgraphenhancedembeddingneuralnetworkforctrprediction.KDD,2021.概图网络用在精排上,作者的出发点是为了解决(user/item)特征的稀疏性和用户交互序列的稀疏性,不过这出......