Группа альтернатив с двумя альтернативами, соответствующими всей строке
Я работаю над регулярным выражением, которое возвращает 1 только в том случае, если заданное значение равно A или B.
я использовал
select 'A' REGEXP '^A|B$'
'|' символ ведет себя как "или", но результат не такой, как ожидалось с AB:
select 'AB' REGEXP '^A|B$' = 1
пока я не ожидаю совпадения здесь.
1 ответ
Ваше текущее решение соответствует
^A
-A
в начале строки|
- или жеB$
-B
в конце строки.
REGEXP
оператор может вернуть частичные совпадения (в отличие от LIKE
оператор, который требует шаблон подстановки, чтобы соответствовать всю строку), и, таким образом, может соответствовать ABC
а также CAB
, Смотрите демо-версию регулярного выражения.
Вы можете использовать
select 'A' REGEXP '^(A|B)$'
A|B
находится внутри конструкции группировки и здесь ^
а также $
оба модифицируют A
а также B
ветка. Смотрите это регулярное выражение.
Если эти A
а также B
одинарные символы, используйте [AB]
выражение в скобках:
'^[AB]$'
где [AB]
Матчи A
или же B
и ^
/ $
якоря изменяют каждую букву в скобках.
Смотрите это регулярное выражение.