Python正则表达式初识

Posted 梦子mengy7762

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python正则表达式初识相关的知识,希望对你有一定的参考价值。

前几天给大家分享了[Python正则表达式初识(一)],介绍了正则表达式中的三个特殊字符“^”、“.”和“*”,感兴趣的伙伴可以戳进去看看,今天小编继续给大家分享Python正则表达式相关特殊字符知识点。

1、特殊字符“ ” 代 表 的 意 思 是 结 尾 字 符 。 举 个 栗 子 , 正 则 表 达 式 “ 3 ”代表的意思是结尾字符。举个栗子,正则表达式“3 3”,表示匹配以3为结尾的字符串。代码演示如下图所示。

正则表达式匹配模式“.*3$”代表以3结尾的任意字符的字符串,很显然匹配的结果和原始字符串是一致的,所以有返回结果。

2、如果将正则表达式匹配模式改为“.*4$”,则表示以4结尾的任意字符的字符串,此时是没有任何的输入结果的,如下图所示。

3、正则表达式特殊字符“?”比较常用,其代表的意思是非贪婪匹配模式。默认情况下,匹配字符串是一种贪婪的匹配,换句话说,默认情况下字符串会根据匹配模式,去匹配最大的长度。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

4、下图是一个实例。其中括号代表的是提取字符串的子串,正则表达式会把满足匹配条件的字符串放到括号里边。匹配模式“.(p.p).”代表的意思是:左边的“. ”的意思是任意字符串,可以是空,也可以是非空的字符串,之后是字符p,中间的“.* ” 的意思也是任意字符串,之后再是一个p,尔后右边的“.* ” 的意思也是任意字符串。目前的逻辑就是将两个p中间的字符串连同p一块取出。

但是其输出的结果却为“pp”,并不是我们想要的“pccccccccccp”结果。原因是正则表达式的贪婪匹配所致,实际上它是反向匹配的,所以从字符串来看,匹配到的结果是“pp”。

5、如果我们使用非贪婪模式,即将匹配模式“.(p.p).”改为模式“.?(p.p).”,在第一“p”之前加个特殊字符“?”,则运行的结果就如下图所示。

可以看到匹配模式已经开始从左边开始进行匹配,答案趋向于我们想要的结果。但是在后面却出现了两个p。原因是后面的那个p未指定其为非贪婪模式,所以后面的那个p仍然是从右边开始反向取值的。最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多人进步都很快,需要你不怕吃苦哦!大家可以去添加上看一下~

6、接下来,我们继续使用非贪婪模式,即将匹配模式“.(p.p).”改为模式“.?(p.?p).”,在第二“p”之前也加个特殊字符“?”,则运行的结果就如下图所示。

此时可以看到匹配的结果就是我们想要的结果了,原因是此时两个p均采用了非贪婪模式,所以匹配模式,从左到右顺序进行。

7、理解非贪婪模式之后,对于正则表达式的匹配就很好理解了,如下图的结果将返回“pcccp”,非贪婪模式下。

8、下图的结果将返回“pcccpcccccccpppp”,非贪婪模式和贪婪模式共存的情况下。

非贪婪模式在网络爬虫的过程中对于字符串的提取非常重要,务必要理解和掌握。小伙伴们,关于正则表达式的特殊字符“$”和“?”的用法,你们get到了吗?

以上是关于Python正则表达式初识的主要内容,如果未能解决你的问题,请参考以下文章

Python正则表达式初识

Python初识模块之正则表达式

Python正则表达式初识

Python正则表达式初识

Python正则表达式初识附正则表达式总结

初识正则表达式