我正在研究一个正则表达式,仅当给定值为 A 或 B 时才返回 1。
我用过
select 'A' REGEXP '^A|B$'
“|”符号的行为类似于“or”,但结果与 AB 的预期不同:
select 'AB' REGEXP '^A|B$' = 1
虽然我预计这里没有匹配。
最佳答案
您当前的解决方案匹配
-
^A
-A
在字符串的开头 -
|
- 或 -
B$
-B
在字符串的末尾。
REGEXP
operator可以返回部分匹配(与 LIKE
运算符不同,需要通配符模式来匹配整个字符串),因此可以匹配 ABC
和CAB
。请参阅regex demo .
您可以使用
select 'A' REGEXP '^(A|B)$'
A|B
位于此处的分组构造内,并且 ^
和$
两者都修改 A
和B
分支。请参阅this regex demo .
如果这些A
和B
是单个字符,请使用 [AB]
括号表达式:
'^[AB]$'
哪里[AB]
匹配A
或B
,以及 ^
/$
anchor 修改括号内的每个字母。
参见this regex demo .
关于mysql - 具有与整个字符串匹配的两个替代项的替代组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51005989/