查找某个单词后的两个字符串之间的字符串

时间:2021-01-05 00:28:57

标签: python regex

在以下字符串中:

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)

2 个答案:

答案 0 :(得分:2)

你可以使用

r"Start[^>]*>(.*?)</a>"
r"(?s)Start.*?>([^<]*)</a>"

参见regex demo。详情:

  • Start - 文字字符串
  • [^>]* - 除 > 之外的零个或多个字符
  • > - > 字符
  • (.*?) - 第 1 组:任何零个或多个字符,尽可能少
  • </a> - 文字字符串。

Python demo

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
相关问题