在以下字符串中:
s = '>foo</a> Start >bar</a> >baz</a>'
我想提取start
之后>
和</a>
之间的第一个值,即bar
。
以下脚本分别完成任务,但我不知道如何合并它们。
regexp = re.compile("Start(.*)$")
output = regexp.search(s).group(1)
output = re.search('>(.*?)</a>', s).group(1)
您可以使用
r"Start[^>]*>(.*?)</a>"
r"(?s)Start.*?>([^<]*)</a>"
请参阅regex演示。详细信息:
Start
-文字字符串[^>]*
-除>
之外的零个或多个字符>
-一个>
字符(.*?)
-组1:任何零个或多个字符,尽可能少</a>
—文字字符串
请参阅Python演示:
import re
s = '>foo</a> Start >bar</a> >baz</a>'
regexp = re.compile(r"Start.*?>([^<]*)</a>", re.DOTALL)
m = regexp.search(s)
if m:
print(m.group(1)) # => bar
好吧,我知道你想用这个做什么,但更简单的是:
s = '>foo</a> Start >bar</a> >baz</a>'
print (s.split("</a>")[1].split(">")[-1])
输出:
bar