2

奇怪的是,我似乎无法在任何地方找到我不能安全地用作 MySQL 正则表达式方括号中的文字的字符列表,而无需转义它们或需要使用某个[:character_class:]东西。

(而且答案可能需要特定于 MySQL,因为与 Perl/PHP/Javascript 等中的正则表达式相比,MySQL 正则表达式似乎缺乏)。

4

2 回答 2

4

几乎所有的元字符(包括 dot .、 the+和quantifiers *?end-of-string anchor$等)在字符类中都没有特殊含义,但有一些值得注意的例外:

  • 右括号],原因很明显
  • caret ^,用于否定字符类(例如:[^ab]匹配 aand之外的任何字符b)。
  • hyphen -,用于表示范围(例如:[0-9]匹配任何数字)

但是,如果将它们放置在角色类中的战略位置,它们仍然可以添加而无需转义:

  • 右括号可以放在左括号之后,例如:[]a]matches]a.
  • 插入符号可以放置在 左括号之后的任何位置[a^],例如:匹配^a
  • 连字符可以放在左括号之后或右括号之前,例如:[-a]and [a-]both match aand -.

更多信息可以在POSIXregex的手册页中找到(感谢 Tomalak Geret'kal!)

于 2011-11-15T18:34:42.907 回答
0

文档中,就在顶部附近:

本节通过示例总结了 MySQL 中可用于 REGEXP 操作的特殊字符和结构。它不包含可以在 Henry Spencer 的 regex(7) 手册页中找到的所有详细信息。该手册页包含在 MySQL 源代码发行版中,位于 regex 目录下的 regex.7 文件中。

可以在此处复制所述手册页(感谢 Google!)。您正在寻找的信息在那里可用。

于 2011-11-15T18:36:23.427 回答