在正则表达式中,某些字符只有在适当放置时才能获得元字符的特殊含义,否则保持其字面含义。例如,只有放在方括号表达式中并且在外面是文字短划线-
时,该字符才被视为元字符。[]
但就个人而言,我喜欢将元字符视为保留字符,并采用严格的规则来转义每个需要字面量的元字符。这节省了我一点时间,否则我会花在考虑元字符在正则表达式中的位置上。
但是,据我所知,转义这样的字符通常是 GNU BRE 的错误。而这个正则表达式
foo\-[0-9]+
\-
RegexBuddy认为其本身无效。此外,RegexBuddy 指示 GNU ERE(但不是 PCRE)的相同错误。另一方面,grep
在 Ubuntu 上不会将此正则表达式视为错误,并且从我的测试中可以正常工作,即使grep
默认情况下应该使用 ERE。
因此,将 BRE 和 RegexBuddy 放在一边,只考虑在当今许多系统和编程语言中使用的 PCRE 和 ERE,问题是习惯于转义每个可能的元字符以获取其字面意义可能是多么错误?