1

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

我用了

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

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

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

虽然我预计这里没有比赛。

4

1 回答 1

2

您当前的解决方案匹配

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

REGEXP运算符可以返回部分匹配项(与需要通配符模式来匹配整个字符串的运算符不同LIKE ),因此可以匹配ABCand CAB。请参阅正则表达式演示

您可以使用

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

在这里A|B是一个分组结构,^并且$都修改了AB分支。请参阅此正则表达式演示

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

'^[AB]$'

where[AB]匹配AorB^/$锚点修改括号内的每个字母。

请参阅此正则表达式演示

于 2018-06-24T00:12:25.743 回答