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