正则表达式的贪婪

来源:3-2 正则表达式-1

归根结底不优秀

2019-03-27

regex_str = ".*?(b.*b).*"       #这样写是对的
match_obj = re.match(regex_str,line)
if match_obj:
   print(match_obj.group(1))

regex_str = ".*(?b.*b).*"       #为什么这样写就是错的
match_obj = re.match(regex_str,line)
if match_obj:
   print(match_obj.group(1))

写回答

2回答

bobby

2019-03-29

//img.mukewang.com/szimg/5c9de9d900012c1407650233.jpg ?是用来限定前面出现的字符的次数,但是这里前面出现的字符是"("这个是正则表达式的分组的起始符,这样?就不知道前面的字符是什么,这样就冲突了, //img.mukewang.com/szimg/5c9dea410001bd3606930165.jpg你这样将"("和")"转移了就是一个正常的字符了,这就不会报错 但是就无法取到数据了

1
1
归根结底不优秀
非常感谢!
2019-03-29
共1条回复

归根结底不优秀

提问者

2019-03-27

?是限定符,放在括号里的第一个不合适


0
1
归根结底不优秀
老师回答
2019-03-27
共1条回复

Scrapy打造搜索引擎 畅销4年的Python分布式爬虫课

带你彻底掌握Scrapy,用Django+Elasticsearch搭建搜索引擎

5796 学习 · 6290 问题

查看课程