首页 > 解决方案 > 获取具有可变属性的标签之间的内容

问题描述

我在编写正则表达式时遇到问题。
我必须得到一个包含在<cite></cite>标签之间的字符串,我确实使用了这种模式
'/>(.*)<\/cite>/',但是由于需求的变化,这个标签现在可能包含或不包含title具有可变内容的属性,并且它可能在其他标签之前或不在它之前。

可能的字符串的一些示例是:
* <cite>Jhon</cite>
* <cite title="a title">Jhon</cite>
* <cite title="another title">Jhon</cite>
*<blockquote>....<cite title="title">Jhon</cite></blockquote>

因此,我的模式不再起作用,因为在最后一个字符串的示例中,它会><blockquote>标签的 和</cite>.

我应该如何更改我的正则表达式以Jhon从这些字符串中获取?

标签: regex

解决方案


这应该这样做

<cite[^>]*>([^<]+)<\/cite> 

解释

  • <cite[^>]*>匹配直到>找到(非贪婪)

  • ([^<]+)匹配直到<找到(对中间文本进行分组)读取第一个匹配组

  • <\/cite></cite>找到匹配的结束标签

这是演示 https://regex101.com/r/6RtBfC/1

PS 不推荐使用正则表达式来解析 HTML 标签


推荐阅读