Python 正则表达式尽可能小的匹配(遇到第一个结束字符串就停止匹配)

在写爬虫爬网页的时候,经常需要爬取里面的一大块代码,比如:

<div>………………………………</div></div></div></div>

我们需要省略号里面的代码块,如果我们用“*”、“+”就会尽可能多的匹配,就会匹配到最后一个</div>。为了实现我们的需求,我们需要尽可能小的匹配,遇到第一个合适的结束字符就返回。
看下面的例子,就会很快明白了

 

a = ‘d5./;.sdf jk56jfs./jfis54′

b = re.search(r'(.*)f’,a)

print b.group(1)

返回的结果是 “d5./;.sdf jk56jfs./j”

 

我们为了遇到一个f就返回,而不是最后一个f才返回,只需要在‘*’后加个”?”,如下面的代码

a = ‘d5./;.sdf jk56jfs./jfis54′

b = re.search(r'(.*?)f’,a)

print b.group(1)

返回的结果是 “d5./;.sd”

15条评论

  1. 助美整形网说道:

    做SEO也要会那么多吗?

  2. 小易分享网说道:

    今天才发现你的博客,连着看了几篇呢 http://www.xevip.cn

  3. 铝合金拉手说道:

    留个言,就走人,晚上有事

  4. 奇虎分享网说道:

    不错哦,赞一个,求认识,求回访

  5. python主要的作用就是爬虫?

发表评论