gpt4 book ai didi

regex - Grep歧义嵌套方括号

转载 作者:行者123 更新时间:2023-12-04 23:57:44 24 4
gpt4 key购买 nike

sample.txt包含

abcde
abde

任何人都可以解释以下命令的输出 -
  • grep '[[ab]]' sample.txt - 无输出
  • grep '[ab[]]' sample.txt - 无输出
  • grep '[ab[]' sample.txt - 输出是 abcde , abde
  • grep '[ab]]' sample.txt - 无输出

  • 还有什么 [(ab)][^(ab)]意思?是不是和 [ab]一样和 [^ab] ?

    最佳答案

    首先要理解的是,在字符类中,正则表达式的元字符都没有任何特殊含义。它们字面上是匹配的。例如,*将匹配 *并不意味着 0 or 1重复。同样,()将匹配 () ,并且不会创建 capture group .

    现在,如果 ]在字符类中找到,它会自动关闭字符类,并且进一步的字符将不是该字符类的一部分。现在,让我们了解上面发生的事情:

    1 , 2 , 和 4 ,您的字符类在第一个结束处结束 ] .所以,最后一个右括号 - ] , 不是字符类的一部分。它必须单独匹配。因此,您的模式将匹配如下内容:

    '[[ab]]' is same as '([|a|b)(])'  // The last `]` has to match.
    '[ab[]]' is same as '(a|b|[)(])' // Again, the last `]` has to match.
    '[ab]]' is same as '(a|b|])(])' // Same, the last `]` has to match.
    ^
    ^---- Character class closes here.

    现在,因为在两个字符串中,都没有 ]最后,因此找不到匹配项。

    而在第三种模式中,您的字符类仅由最后一个 ] 关闭。 .因此,一切都在字符类中。
    '[ab[]' means match string that contains 'a', or 'b', or '['

    这是完全有效的并且匹配两个字符串。

    And what does [(ab)] and [^(ab)] mean?


    [(ab)]表示匹配任何 ( , a , b , ) .请记住,在字符类中,正则表达式的元字符没有任何特殊含义。因此,您不能在字符类中创建组。
    [^(ab)]表示与 [(ab)] 完全相反.它匹配任何不包含任何指定字符的字符串。

    Is it the same as [ab] and [^ab] ?



    不。这两个不包括 () .因此它们几乎没有什么不同。

    关于regex - Grep歧义嵌套方括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14891871/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com