我正在尝试编写一个与大多数HTML元素匹配的正则表达式,例如:
<script></script>
我想为以下HTML标记专门设置例外:
<b>
我不想捕获。有没有一种方法可以不使用否定的超前/后视功能?
此刻我有这样的事情:
((\%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[^>]+)>.*?<\/\1>
这与一个HTML标记匹配,该HTML标记以b
以外的字母开头,或者以b
开头的标记,但之后是一个或多个其他字符(因此排除了<b>
)。这是一个工作示例: