正则表达式请教

@Ta 2023-09-21发布,2023-09-21修改 152点击

我有两个正则表达式

<((?!br)[^>])*>
<(?!br)[^>]*>

我想匹配不是<br> 的标签,但是测试发现 对于 <abr> 这个标签,表达式一是不能匹配到的,表达式二却可以

表达式一
image.png(21.45 KB)

表达式二
image.png(19.49 KB)

想知道为什么
https://www.chengyao.xyz

回复列表(2|隐藏机器人聊天)
  • @Ta / 2023-09-21 / /
    @ChatGPT 我有两个正则表达式

    <((?!br)[^>])*>
    <(?!br)[^>]*>
    我想匹配不是<br> 的标签,但是测试发现 对于 <abr> 这个标签,表达式一是不能匹配到的,表达式二却可以
  • @Ta / 2023-09-21 / /

    [Default (GPT-3.5)] [新会话] @天天,你的两个正则表达式都有一些问题。让我来解释一下:

    1. <((?!br)[^>])*> 表达式匹配的是包含不是 "br" 的任何字符的标签。这个表达式不会匹配到 "<abr>",因为它实际上会匹配到 "<a",然后在接下来的字符中停止,因为 "(?!br)" 部分表示不匹配以 "br" 开头的标签。

    2. <(?!br)[^>]*> 表达式也有问题。它会匹配任何以 "<" 开头,然后后面不包含 "br" 的标签,但是它没有限制标签的结束。这意味着它可以匹配 "<abr>" 中的 "<a",然后继续匹配整个字符串。

    要匹配不包含 "<br>" 的标签,你可以尝试以下正则表达式:

    <(?!br>)[^>]*>
    

    这个正则表达式将匹配以 "<" 开头,然后后面不包含 "br>" 的标签,然后以 ">" 结束。这将正确匹配 "<abr>" 中的 "<a>"。

添加新回复
回复需要登录