在以下字符串中:
s = '>foo</a> Start >bar</a> >baz</a>'
我想提取 >
之后 </a>
和 start
之间的第一个值,即 bar
。
以下脚本分别完成这项工作,但我不知道如何合并它们。
regexp = re.compile("Start(.*)$")
output = regexp.search(s).group(1)
output = re.search('>(.*?)</a>', s).group(1)
答案 0 :(得分:2)
你可以使用
r"Start[^>]*>(.*?)</a>"
r"(?s)Start.*?>([^<]*)</a>"
参见regex demo。详情:
Start
- 文字字符串[^>]*
- 除 >
之外的零个或多个字符>
- >
字符(.*?)
- 第 1 组:任何零个或多个字符,尽可能少</a>
- 文字字符串。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
答案 1 :(得分:2)
好吧,我知道你想用这个做什么,但更简单的是:
s = '>foo</a> Start >bar</a> >baz</a>'
print (s.split("</a>")[1].split(">")[-1])
输出:
bar