如何在python中获得多个正则表达式匹配?

时间:2014-03-11 18:04:34

标签: python regex

我有这样的文字:

 <div class="additional-details">
  <div class="mark-container">
   <input type="checkbox" id="comp-80174649" value="80174649"
          data-heading-code="2550"/>
   <label for="comp-80174649">???</label>
   <a href="#" class="compare-link" id="compare-link-1"
      data-compare="/80174649/2550/"
      data-drop-down-id="compare-content-1"
      data-drop-down-content-id="compare-content"
      data-drop-down-class="drop-down-compare"
      etc...
      data-compare="/8131239/2550/"

我正试图抓住内部数据 - 比较=&#34; HERE &#34; (我有多场比赛)。

我知道如何使用MatchCollection在C#中执行此操作,但在python中我对re.search,re.match非常困惑,而且我还注意到在C#中使用的正则表达式并不是真的在python工作。

有人可以解释如何完成这项工作吗?

1 个答案:

答案 0 :(得分:1)

re.findall可用于查找列表中的所有匹配项。

>>> import re
>>> s = '<div cla'  # whole string here
>>> result = re.findall('data-compare="([\d/]+)"', s)
>>> print result
['/80174649/2550/', '/8131239/2550/']

<强>解释

'/80174649/2550/'之类的所需输出只包含数字和正斜杠,因此我们只会将其作为目标。

([\d/]+)中,[\d/]表示匹配数字(由\d表示)或正斜杠/

然后+符号表示前面的模式[\d/]可以多次出现,因为我们有多个数字和/

括号括起来表示只能捕获并返回所附图案[\d/]+