除特定字符串外的正则表达式匹配表达式(无负面前瞻)
regex match expression except specific string (no negative lookahead)
我正在尝试编写一个匹配大多数 HTML 元素的正则表达式,例如:
<script></script>
我想专门为以下 HTML 标记例外:
<b>
我不想捕捉。有没有办法不用负数 lookahead/lookbehind?
目前我有这样的事情:
((\%3C)|<)[^<b]((\%2F)|\/)*[^<\/b][a-z0-9\%\=\'\(\)\ ]+((\%3E)|>)
https://regex101.com/r/ZxkVMJ/2
它确实有效,但除了
<b>
它也没有捕获所有 1 个字符的标签
(like <a> for example)
以及以 b 开头的较长标签,例如
<balloon>
感谢您的帮助
作为免责声明,如果您可以使用任何类型的 XML/HTML 解析器,那么您应该真正使用它来解决当前的问题。如果你被迫在这里使用正则表达式,那么考虑这个模式:
<([^b][^>]*|b[^>]+)>.*?<\/>
这匹配以 b
以外的字母开头的 HTML 标签,或者以 b
开头但后跟一个或多个其他字母的标签字符(因此排除了 <b>
)。这是一个工作演示:
我正在尝试编写一个匹配大多数 HTML 元素的正则表达式,例如:
<script></script>
我想专门为以下 HTML 标记例外:
<b>
我不想捕捉。有没有办法不用负数 lookahead/lookbehind?
目前我有这样的事情:
((\%3C)|<)[^<b]((\%2F)|\/)*[^<\/b][a-z0-9\%\=\'\(\)\ ]+((\%3E)|>)
https://regex101.com/r/ZxkVMJ/2
它确实有效,但除了
<b>
它也没有捕获所有 1 个字符的标签
(like <a> for example)
以及以 b 开头的较长标签,例如
<balloon>
感谢您的帮助
作为免责声明,如果您可以使用任何类型的 XML/HTML 解析器,那么您应该真正使用它来解决当前的问题。如果你被迫在这里使用正则表达式,那么考虑这个模式:
<([^b][^>]*|b[^>]+)>.*?<\/>
这匹配以 b
以外的字母开头的 HTML 标签,或者以 b
开头但后跟一个或多个其他字母的标签字符(因此排除了 <b>
)。这是一个工作演示: