0

我有一个以前匹配的模式,例如:

<a href="somelink here something">

现在我希望只提取标签中特定属性的值,但这可能是标签中任何地方出现的任何东西。

regex_pattern=re.compile('href=\"(.*?)\"') 

现在我可以使用上面的来匹配属性和值部分,但我只需要提取(.*?)部分。(价值)

我当然可以剥离href=""但我确信我可以正确使用正则表达式来仅提取所需的部分。

简单来说我想匹配

abcdef=\"______________________\"

在模式中,但只想要

____________________

部分

我该怎么做呢?

4

2 回答 2

2

只需re.search('href=\"(.*?)\"', yourtext).group(1)在匹配的字符串上使用yourtext,它就会产生匹配的组。

于 2012-07-27T08:57:10.633 回答
1

看一下正则表达式结果的.group()方法。MatchObject

您的正则表达式有一个明确的组匹配组(括号中的部分()),并且该.group()方法使您可以直接访问在该组中匹配的字符串。MatchObject由多个re函数和方法返回,包括.search()and.finditer()函数。

示范:

>>> import re
>>> example = '<a href="somelink here something">'
>>> regex_pattern=re.compile('href=\"(.*?)\"') 
>>> regex_pattern.search(example)
<_sre.SRE_Match object at 0x1098a2b70>
>>> regex_pattern.search(example).group(1)
'somelink here something'

从括号语法的正则表达式语法文档中:(...)

匹配括号内的任何正则表达式,并指示组的开始和结束;组的内容可以在执行匹配后检索,并且可以稍后在字符串中使用 \number 特殊序列进行匹配,如下所述。要匹配文字 '(' 或 ')',请使用 \( 或 \),或将它们包含在字符类中:[(] [)]。

于 2012-07-27T09:01:43.003 回答