我在使用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>
我想得到这个结果。
答案 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+)<'