具有两个匹配整个字符串的备选方案的交替组

Alternation group with two alternatives matching entire string

我正在研究一个正则表达式,returns 1 仅在给定值为 A 或 B 的情况下。

我用过

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

'|'符号的行为类似于 "or",但结果与 AB 的预期不同:

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

虽然我预计这里没有匹配项。

您当前的解决方案匹配

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

REGEXP operator can return partial matches (unlike LIKE operator that requires the wildcard pattern to match the whole string), and thus can match ABC and CAB. See the regex demo.

您可以使用

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

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

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

'^[AB]$'

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

参见 this regex demo