【python】【re正则表达式】学习资源汇总

本文介绍了正则表达式的基本概念及使用技巧,包括非贪婪模式、反义匹配、re模块函数findall的使用等,并提供了实例帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

部分笔记,最近比较懈怠,这篇一直放草稿没有发,这样不行,push一下自己

笔记:

前段时间复习了脑图


1. .*? 是一个固定的搭配,.和*代表可以匹配任意无限多个字符,加上?表示使用非贪婪模式进行匹配,也就是我们会尽可能短地做匹配,以后我们还会大量用到 .*? 的搭配。(.*?)代表一个分组,或者说一个捕获组。 

在很多搜索中,会用表示任意一个字符,“*”表示任意连续字符,这种被称为通配符。However,在正则表达式中,任意字符是由“.”表示,而“*”表示前面的字符重复0到多次(联想记忆 * 像不像0,代表0到多次)是一种懒惰匹配方式,比如说“.*”会尽可能对前面的字符重复尽可能长的结果,但是“.*?”则会匹配到最短的就停止了,看一个例子

[‘I’m Shirly Hilton. I am his wife’]

“I.*e”去匹配会得到:

[‘I’m Shirly Hilton. I am his wife’] 匹配了整个句子

“I.*?e”去匹配会得到:

[‘I’m Shirly Hilton’, ‘ I am his wife’] 尽可能短就结束了

 

2.反义,表示我要匹配的除了你,谁都可以的情况,比较常见的有下面两种(asfar as I know

(1)大小写   

         \b 匹配任意是单词开头或者结束的位置  -- \B 匹配不是单词开头或者结束的位置 -- 

         \d匹配任意数字的字符 --   \D 匹配任意非数字的字符  

        \w 匹配任意是字母、数字、下划线的字符  -- \W 匹配任意不是字母,数字,下划线的字符

         \s 匹配任意的空白符  --  \S 匹配任意不是空白符的字符     

        (发现了吗,小写匹配任意blahblah的字符,大写和小写对着干)

        ^ 匹配字符串的开头 -- $ 匹配字符串的结尾

(2)^来表示反义

        [^a]匹配除了a之外的所有

        [^abc]匹配除了abc之外的所有

        有意思的是用[ ]来匹配其中的一个内容,比如说[Hh]i匹配Hi或者hi[] -]匹配

3. re.findall(r’pattern’,string)

     这里注意一个r的用法,是raw的意思,它表示对字符串不进行转义,比如说要检索\bhi\b就是用元字符\b检测字符的开头结尾,来匹配hi

$print (“\bhi”)

>hi

$print(r”\bhi”)

>\bhi

看到不同了吗,不加r的话\b就没有了,因为Python字符串碰到“\”会转义它后面的字符。如果想要在字符串里面打“\”,则要打成“\\”,使用一个r的话,表示不要转义字符串中的任何字符,保持原样,简化了字符串。

4. 更多的re模块参考

首推官方文档,官方文档可以进行知识补充,较为权威,可以当handbook用

根据最近学习的思维导图,第一步先对re有一个大概的了解吧:正则表达式30分钟入门教程

另外补充对照看这些

python正则表达式--re模块的使用

这个指南也不错,python正则表达式指南

容易出现的问题:

什么时候使用转义?

在需要检索元字符(metacharacter)的时候需要

补充说明资料:

1.python正则表达式的Match对象的group方法


现在感觉,学习一个东西,就是repeat repeat and repeat,反复到吐,就成功了


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值