正则表达式匹配表达式,除了特定的字符串(无否定的前瞻)

问题描述 投票:0回答:1

我正在尝试编写一个与大多数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>

谢谢您的帮助

regex regex-negation regex-group
1个回答
0
投票

作为免责声明,如果您拥有任何类型的XML / HTML解析器,则应将其真正用于当前的问题。如果您在此处被迫使用正则表达式,请考虑以下模式:

<([^b][^>]*|b[^>]+)>.*?<\/\1>

这与一个HTML标记匹配,该HTML标记以b以外的字母开头,或者以b开头的标记,但之后是一个或多个其他字符(因此排除了<b>)。这是一个工作示例:

Demo

© www.soinside.com 2019 - 2024. All rights reserved.