我想删除其他 2 个标签内的所有 html 标签,除了<a href=.*?">
和</a>
例如:
<p class="mb-40px">Another blending </h2>option is to all the <div>brushstrokes to show. In the painting of trees above, I didn’t spend much time trying to <a href=https://orfun.com/acrylic class="color-bebe" target="_new">blend the colors</a>. I simply mix each color and apply it without fussing with it.</p>
输出:
<p class="mb-40px">Another blending option is to all the brushstrokes to show. In the painting of trees above, I didn’t spend much time trying to <a href=https://orfun.com/acrylic class="color-bebe" target="_new">blend the colors</a>. I simply mix each color and apply it without fussing with it.</p>
我的正则表达式不是很好:
寻找:<p class="mb-40px">.*?</p>(?!</a>)|(?!<a href=.*?">)
(?:<p class="mb-40px">|\G).*?\K(?:<a href=.+?</a>(*SKIP)(*FAIL)|<(?:(?!/?p).)+?>)
LEAVE EMPTY
解释:
截图(之前):
截图(之后):
寻找:
(?:<p class="mb-40px">|\G).*?\K(?:<a href=.+?</a>(*SKIP)(*FAIL)|<(?:(?!/?p class="mb-40px">|/p>).)+?>)
替换为:
LEAVE EMPTY
或者:
寻找:
<p class="mb-40px">(?:[^<]+|<(?!/?[ap]|a\s[^>]>))?</p>(*SKIP)(FAIL)|<(?!/?[ap]|a\s[^>]>)[^>]+>
替换为:
LEAVE EMPTY
元素 [ap] 是匹配“a”或“p”的字符类。在正则表达式中,使用字符类允许您为模板中的给定位置指定一组可能的字符。
在我们的例子中,[ap] 用于 <(?!/?[ap]|a\s[^>]*>) 部分,我们在其中检查以 '<' 开头且后面不带 ' 的标签a' 或 'p'。通过使用 [ap],我们表明我们希望“<”之后的下一个字母是“a”或“p”。因此,任何不以“a”或“p”开头的标签都将包含在正则表达式匹配中并被替换。
我希望这个解释能够澄清 [ap] 元素在提议的正则表达式中的使用。