gpt4 book ai didi

regex - 为什么右括号是一个必须转义才能被视为文字的特殊字符?

转载 作者:行者123 更新时间:2023-12-02 06:36:01 26 4
gpt4 key购买 nike

很明显,正则表达式必须转义左括号“(”以及其他字符(以反斜杠为前缀)以包含“文字左括号”:因为有正则表达式选项“(”是导入。

但是为什么右括号“)”也是如此呢?没有以“)”作为前导标记的语法结构,是吗?

那么,为什么我必须避开右括号才能按字面意思理解它们?

当然,对于其他右括号也可以问同样的问题。

很抱歉这是一个“为什么会这样?”问题。这可能是无法回答的。但是,如果有一个很好的理由, 了解它的唯一方法就是询问!

附录:这个问题背后的理由是:例如,http://www.regexguru.com/2008/12/dont-escape-literal-characters-that-arent-metacharacters/给出了不为不需要前缀的字符添加前缀的充分理由。

恕我直言,在大多数情况下,右括号不需要前缀:由于没有左括号的右括号不是正则表达式组的一部分,所以我发现在这种情况下无论如何都需要转义它是完全不合逻辑的。

最佳答案

假设您要匹配一个包含右括号的组。如果不转义,这看起来像这样 ())。转义括号,如 (\)) 可以更容易(甚至不可能)正确且明确地解析正则表达式。

在(未转义的)正则表达式 (\w)) 中,右括号是否属于该组,即是否由第一个或第二个 闭合的组)?例如,对于字符串 abc)d,它是否匹配 cc)

当然,可以省略一些转义字符,以防含义不明确(正则表达式解析器允许这样做),但这有什么帮助呢?你到处存一个字符,但是每次遇到)或者其他特殊字符你就得想:“这是控制字符还是要匹配的字符?是不是有歧义?”最好使其清晰一致。

关于regex - 为什么右括号是一个必须转义才能被视为文字的特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18958861/

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