使用变量属性获取标签之间的内容

时间:2019-07-03 10:11:37

标签: regex

我无法编写正则表达式。
我必须在<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

2 个答案:

答案 0 :(得分:3)

这应该做到

@SerializedName(value="Poster", alternate={"Poster ", "Pöster"})
String poster;

说明

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

  • >匹配,直到找到([^<]+)(将中间文本分组) 阅读第一个比赛组

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

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

P.S。不推荐使用正则表达式来解析HTML标记

答案 1 :(得分:1)

编辑:更新了正则表达式以捕获同一行中存在的多个标签。

使用正则表达式解析XML是bad的想法。如果您仍然对基于正则表达式的解决方案感兴趣,请执行以下操作:

<cite.*?>(.*?)<\/cite>

我正在做的就是在正则表达式中使用<cite>标记的开头,以及它可能包含的所有属性。懒惰方法被用来捕获同一行中可用的多个标签。

Demo

相关问题