奇怪的是,我似乎无法在任何地方找到我不能安全地用作 MySQL 正则表达式方括号中的文字的字符列表,而无需转义它们或需要使用某个[:character_class:]
东西。
(而且答案可能需要特定于 MySQL,因为与 Perl/PHP/Javascript 等中的正则表达式相比,MySQL 正则表达式似乎缺乏)。
奇怪的是,我似乎无法在任何地方找到我不能安全地用作 MySQL 正则表达式方括号中的文字的字符列表,而无需转义它们或需要使用某个[:character_class:]
东西。
(而且答案可能需要特定于 MySQL,因为与 Perl/PHP/Javascript 等中的正则表达式相比,MySQL 正则表达式似乎缺乏)。
几乎所有的元字符(包括 dot .
、 the+
和quantifiers *
、?
end-of-string anchor$
等)在字符类中都没有特殊含义,但有一些值得注意的例外:
]
,原因很明显^
,用于否定字符类(例如:[^ab]
匹配除 a
and之外的任何字符b
)。-
,用于表示范围(例如:[0-9]
匹配任何数字)但是,如果将它们放置在角色类中的战略位置,它们仍然可以添加而无需转义:
[]a]
matches]
或a
.[a^]
,例如:匹配^
或a
[-a]
and [a-]
both match a
and -
.更多信息可以在POSIXregex
的手册页中找到(感谢 Tomalak Geret'kal!)