在Regular Expressions Quick Start中,它声明了
十二个字符在正则表达式中有特殊含义:反斜杠\,插入符号^,美元符号$,句点或点。,竖线或竖线符号|,问号?,星号或星号*,加号+,左括号(,右括号),开口方括号[和开口大括号{。这些特殊字符通常称为“元字符”。单独使用时,大多数都是错误的。
在其规范中,()
,[
,{
是元字符,而'关闭sqare括号'和'关闭大括号'则不是。
显然,'['和'{'无法单独起作用就像开括号(
应该是合作伙伴')'。
导致']'和}
无法被选中的原因是什么?
答案 0 :(得分:1)
没有充分的理由说明为什么不匹配的]
和}
应该是文字,而)
则不应该。
原因]
和}
经常(但并非总是)被解释为文字,如果它们不成对出现,)
不成对,可能是“历史”和“因为括号巢”。 (正如Casimir et Hippolyte指出的那样,两者都是如此,因为括号用于表示与分组,外观等有关的一系列事物。)
在academia中,正则表达式简化为|
(交替),连接和*
(Kleene-star),括号是第一个便捷语法。如果您要使递归下降解析器将[
识别为进入语法略有不同的状态,并且]
表示再次离开该状态,则将该状态之外的]
识别为作为一个错误不会是识别[
的直接副作用。因此,如果错误没有爆发,那就是一个功能!
括号与此不同:由于正则表达式解析器必须跟踪它们嵌套的级别,因此识别其主要状态中不匹配的)
是此类解析器的必需部分,并给出错误而不是产生文字)
是这种解析器的作者更倾向于做的事情。
请注意,(
和)
通常可以在字符组内部进行非转义和不匹配。