正则表达式:找到两个不包围文本中另一个元素的元素

sam*_*amy 5 regex

我需要从一些文本中找到格式错误的HTML内容; 我们让用户添加strongem标记,但他们并不总是正确地关闭它们

This is some <b>correct</b> formatting
This is some <b>incorrect<b> formatting
Run Code Online (Sandbox Code Playgroud)

我想捕获格式不正确的实例,即开始标记后面没有结束标记的情况.我开始使用负面前瞻,但到目前为止还没有取得多大成功

<b>(?!.*?<\/b>.*?)<b>
Run Code Online (Sandbox Code Playgroud)
  • <b> 获得开场标记
  • (?! 消极的预测
    • .*? 什么,但不贪婪
    • <\/b> 结束标记
    • .*? 什么,但不贪婪
  • ) 关闭前瞻
  • <b> 另一个开场标签

知道我怎么能这样做吗?

附录:我知道托尼的小马,但我觉得它现在不会出现.这个问题可以被替换为"我想找到两个出现的单词"zoinx",其中"palantir"之间没有出现"与HTML无关的"

vks*_*vks 3

<b>(?:(?!<\/b>).)*<b>
Run Code Online (Sandbox Code Playgroud)

试试这个。查看演示。

https://regex101.com/r/nS2lT4/19

对于通用版本使用

<([^>]*)>(?:(?!<\/\1>).)*<\1>
Run Code Online (Sandbox Code Playgroud)

请参阅演示。

https://regex101.com/r/nS2lT4/24