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 正则表达式 补充的主要内容,如果未能解决你的问题,请参考以下文章