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
从这些字符串中获取?
解决方案
这应该这样做
<cite[^>]*>([^<]+)<\/cite>
解释
<cite[^>]*>
匹配直到>
找到(非贪婪)([^<]+)
匹配直到<
找到(对中间文本进行分组)读取第一个匹配组<\/cite>
</cite>
找到匹配的结束标签
这是演示 https://regex101.com/r/6RtBfC/1
PS 不推荐使用正则表达式来解析 HTML 标签
推荐阅读
- python - Python 看不到 Jenkins 参数化构建中设置的环境变量
- python - 使用 Beautiful Soup for Python 从网格表值中抓取文本问题
- blazor-client-side - Blazor Webassembly,自定义 http 响应标头
- javascript - 可汗学院算法 - 挑战:二分搜索“While 循环运行时间过长。”
- node.js - 快递,猫鼬:我想在一个对象内“req.body”,但我不知道该怎么做
- javascript - 将新数据添加到图形时 chart.js 自动平移
- linux - C# 资源暂时不可用,在 linux 上的 dotnet 核心上阻塞套接字
- c - 使用 Xcode iOS 框架中的 C 库使用不同类型重新定义 Typedef
- r - 在 R 中的 h2o 中跨模型的交叉验证
- regex - 正则表达式在后面几行捕获字符串