首页 > 编程语言 > 详细

Python 正则表达式 补充

时间:2018-09-02 17:00:10      阅读:151      评论:0      收藏:0      [点我收藏+]

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 正则表达式 补充

原文:https://www.cnblogs.com/hyeTi/p/9568897.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!