使用python reg exp match str

时间:2016-04-04 10:57:12

标签: python regex

我在使用python reg exp来匹配来自html的str时遇到了麻烦。

 support= re.findall(r'<span id="cos_support-(\d)*">(\d)*</span>', unicodePage)
 print(support)

我们的输出是

  

('9','6')('7','4')('6','3')('5','4')('1','4')(' 5','3')。

但是在我的记事本++中,我使用reg来匹配str。输出是这个

<span id="cos_support-3102208">314</span>

我想得到这个结果。

2 个答案:

答案 0 :(得分:1)

正则表达式搜索将返回由圆括号括起的组。在您的情况下,您在正则表达式中定义了两个组,并且每次匹配时都会返回这些部分。

要检索完整匹配,您需要使用如下所示的圆括号括起整个正则表达式:

support= re.findall(r'(<span id="cos_support-(\d)*">(\d)*</span>)', unicodePage)

此外,正则表达式中存在非严重错误。您应该使用(\d)*而不是(\d+),因为这会将整个数字序列包含到匹配的组中而不是仅包含一个数字,并且至少需要一个数字。因此,结果表达式应如下所示:

support = re.findall(r'(<span id="cos_support-(\d+)">(\d+)</span>)', unicodePage)

最后,如果您不想捕捉内部群组并且只需要完整匹配,您可以摆脱各自的圆括号:

support = re.findall(r'(<span id="cos_support-\d+">\d+</span>)', unicodePage)

答案 1 :(得分:0)

尝试这种模式:

r'-(\d+).*?>(\d+)<'