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

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

笔记:

前段时间复习了脑图

【python】【re正则表达式】学习资源汇总_第1张图片

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,反复到吐,就成功了


你可能感兴趣的:(python)