具有两个匹配整个字符串的替代方案的替代组

时间:2018-06-24 00:08:30

标签: mysql sql regex regex-alternation

我处理正则表达式,仅在给定值为A或B的情况下才返回1。

我用过

select 'A' REGEXP '^A|B$'

“ |”符号的行为类似于“或”,但结果与AB不一致:

select 'AB' REGEXP '^A|B$' = 1

虽然我希望这里没有匹配项。

1 个答案:

答案 0 :(得分:2)

您当前的解决方案匹配

  • ^A-字符串开头的A
  • |-或
  • B$-B放在字符串的末尾。

REGEXP operator可以返回 partial 匹配项(不像LIKE运算符需要通配符模式来匹配整个字符串),因此可以匹配ABCCAB。参见regex demo

您可以使用

select 'A' REGEXP '^(A|B)$'

A|B在这里的分组构造中,^$都修改了AB分支。参见this regex demo

如果这些AB是单个字符,请使用[AB]方括号表达式:

'^[AB]$'

其中[AB]AB匹配,而^ / $锚点修改括号内的每个字母。

请参见this regex demo