Python正则表达式初识(二)-创新互联

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

专注于为中小企业提供成都做网站、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业濮阳免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近千家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

Python正则表达式初识(二)


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


Python正则表达式初识(二)


正则表达式匹配模式“.*3$”代表以3结尾的任意字符的字符串,很显然匹配的结果和原始字符串是一致的,所以有返回结果。
2、如果将正则表达式匹配模式改为“.*4$”,则表示以4结尾的任意字符的字符串,此时是没有任何的输入结果的,如下图所示。


Python正则表达式初识(二)


3、正则表达式特殊字符“?”比较常用,其代表的意思是非贪婪匹配模式。默认情况下,匹配字符串是一种贪婪的匹配,换句话说,默认情况下字符串会根据匹配模式,去匹配大的长度。
4、下图是一个实例。其中括号代表的是提取字符串的子串,正则表达式会把满足匹配条件的字符串放到括号里边。匹配模式“.*(p.*p).*”代表的意思是:左边的“.* ”的意思是任意字符串,可以是空,也可以是非空的字符串,之后是字符p,中间的“.* ” 的意思也是任意字符串,之后再是一个p,尔后右边的“.* ” 的意思也是任意字符串。目前的逻辑就是将两个p中间的字符串连同p一块取出。


Python正则表达式初识(二)


但是其输出的结果却为“pp”,并不是我们想要的“pccccccccccp”结果。原因是正则表达式的贪婪匹配所致,实际上它是反向匹配的,所以从字符串来看,匹配到的结果是“pp”。
5、如果我们使用非贪婪模式,即将匹配模式“.*(p.*p).*”改为模式“.*?(p.*p).*”,在第一“p”之前加个特殊字符“?”,则运行的结果就如下图所示。


Python正则表达式初识(二)


可以看到匹配模式已经开始从左边开始进行匹配,答案趋向于我们想要的结果。但是在后面却出现了两个p。原因是后面的那个p未指定其为非贪婪模式,所以后面的那个p仍然是从右边开始反向取值的。
6、接下来,我们继续使用非贪婪模式,即将匹配模式“.*(p.*p).*”改为模式“.*?(p.*?p).*”,在第二“p”之前也加个特殊字符“?”,则运行的结果就如下图所示。


Python正则表达式初识(二)


此时可以看到匹配的结果就是我们想要的结果了,原因是此时两个p均采用了非贪婪模式,所以匹配模式,从左到右顺序进行。
7、理解非贪婪模式之后,对于正则表达式的匹配就很好理解了,如下图的结果将返回“pcccp”,非贪婪模式下。


Python正则表达式初识(二)


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


Python正则表达式初识(二)


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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:Python正则表达式初识(二)-创新互联
文章源于:http://ybzwz.com/article/eoegi.html