我有一个先前匹配的模式,例如:
<a href="somelink here something">
现在我希望仅提取标记中特定属性的值,但这可能是标记中任何位置出现的任何内容。
regex_pattern=re.compile('href=\"(.*?)\"')
现在我可以使用上面的内容来匹配属性和值部分,但我只需要提取(.*?)
部分。 (值)
我可以稍后去掉href="
和"
,但我确信我可以正确使用正则表达式来提取所需的部分。
简单来说我想匹配
abcdef=\"______________________\"
在模式中但只想要
____________________
部分
我该怎么做?
答案 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特殊序列进行匹配,如下所述。要匹配文字'('或')',请使用\(或\),或将它们包含在字符类中:[(] [)]。