Python 正则表达式 补充

Posted hyeti

tags:

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

cuiqingcai大佬《Python3 网络爬虫开发实战》整理

贪婪与非贪婪

import re

content = Hello 12345678 Word_This is a Regex Demo

result = re.match(^He.*(d+).*Demo$, content)

print(result.group(1))

原本打算取出12345678,

运行结果:8

贪婪匹配模式:.* 会匹配尽可能多的字符。

.*后(d+)至少匹配一个数字,未指定具体数字。因此,.*尽可能匹配多的字符,把1234567匹配,给d+留下一个仅满足条件的结果8。

so,最后结果就至于8了。

 

非贪婪模式匹配:.*?  尽可能匹配少的字符,余下交给后面的去匹配。

在.*后加一个?

import re

content = Hello 12345678 World_This is a Regex Demo

result = re.match(^He.*?(d+).*Demo$, content)

print(result.group(1))

运行结果:12345678

 所以,匹配时,字符中间尽量用非贪婪匹配,以免出现匹配结果确实的情况。若是匹配结果在字符串结果,.*?有可能匹配不到任何内容,因为它会匹配尽可能少的字符。

import re

content = http://weibo.com/comment/kEraCN

result1 = re.match(^h.*?comment/(.*?), content)

result2 = re.match(^h.*?comment/(.*), content)

print(result1, result1.group(1))

print(result2, result2.group(2))

 

 

 

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

循环通过 python 正则表达式匹配

正则表达式(补充)

python基础篇第六篇模块补充正则表达式

Java学习笔记21(String类补充:正则表达式)

Python自动化开发学习18-Web前端补充内容

通过 Java 正则表达式提取 semver 版本字符串的片段