【问题标题】:find substrings between two string [duplicate]查找两个字符串之间的子字符串[重复]
【发布时间】:2020-05-28 05:32:45
【问题描述】:

我有一个这样的字符串:


string = r'''<img height="233" src="monline/" title="email example" width="500" ..
title="second example title"  width="600"...
title="one more title"...> '''

我正在尝试获取任何显示为标题的内容 (title="Anything here") 我已经尝试过了,但它不能正常工作。

re.findall(r'title=\"(.*)\"',string)

【问题讨论】:

标签: python regex


【解决方案1】:

我认为你的正则表达式太贪心了。你可以试试this

re.findall(r'title=\"(?P<title>[\w\s]+)\"', string)

正如@Austin 和@Plato77 在 cmets 中所说,在 python 中解析 HTML 有更好的方法。有关更多上下文,请参阅其他 SO Answers。有一些常用的工具,例如:

如果您想了解更多关于不同 python HTML 解析器的性能测试,您可以了解更多here

【讨论】:

  • 谢谢这工作正常!
  • @mahhos,我很高兴这个答案很有用。一旦您的问题得到解决,请接受正确的答案。 Learn how
【解决方案2】:

正如@Austin 和@Plato77 在 cmets 中所说,在 python 中解析 HTML 有更好的方法。我也支持这一点,但如果你想通过正则表达式完成它,这可能会有所帮助

c = re.finditer(r'title=[\"]([a-zA-Z0-9\s]+)[\" ]', string)

for i in c:
    print(i.group(1))

【讨论】:

    【解决方案3】:

    这里的问题是下一个 " 符号被解析为一个字符,并被视为您的 RE 的 (.*) 的一部分。对于您的用例,您只能使用字母和数字。

    【讨论】:

      猜你喜欢
      • 2011-03-23
      • 2017-07-07
      • 2014-12-07
      • 2013-09-13
      • 1970-01-01
      相关资源
      最近更新 更多