如果在Python中使用Regex,则提取部分文本

时间:2012-07-27 08:53:14

标签: python regex

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

<a href="somelink here something">

现在我希望仅提取标记中特定属性的值,但这可能是标记中任何位置出现的任何内容。

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

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

我可以稍后去掉href="",但我确信我可以正确使用正则表达式来提取所需的部分。

简单来说我想匹配

abcdef=\"______________________\"

在模式中但只想要

____________________

部分

我该怎么做?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

查看正则表达式MatchObject结果的.group() method

您的正则表达式具有显式组匹配组(() parethesis中的部分),.group()方法可让您直接访问该组内匹配的字符串。多个MatchObject函数和方法返回re,包括.search().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'

来自(...)括号语法的Regular Expression syntax documentation

  

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