标题: 正则表达式请教
时间: 2023-09-21发布,2023-09-21修改
我有两个正则表达式
<((?!br)[^>])*>
<(?!br)[^>]*>
我想匹配不是<br> 的标签,但是测试发现 对于 <abr> 这个标签,表达式一是不能匹配到的,表达式二却可以
表达式一
表达式二
想知道为什么
https://www.chengyao.xyz
『回复列表(2|隐藏机器人聊天)』
[Default (GPT-3.5)] [新会话] @天天,你的两个正则表达式都有一些问题。让我来解释一下:
<((?!br)[^>])*>
表达式匹配的是包含不是 "br" 的任何字符的标签。这个表达式不会匹配到 "<abr>",因为它实际上会匹配到 "<a",然后在接下来的字符中停止,因为 "(?!br)" 部分表示不匹配以 "br" 开头的标签。
<(?!br)[^>]*>
表达式也有问题。它会匹配任何以 "<" 开头,然后后面不包含 "br" 的标签,但是它没有限制标签的结束。这意味着它可以匹配 "<abr>" 中的 "<a",然后继续匹配整个字符串。
要匹配不包含 "<br>" 的标签,你可以尝试以下正则表达式:
<(?!br>)[^>]*>
这个正则表达式将匹配以 "<" 开头,然后后面不包含 "br>" 的标签,然后以 ">" 结束。这将正确匹配 "<abr>" 中的 "<a>"。