Группа альтернатив с двумя альтернативами, соответствующими всей строке

Я работаю над регулярным выражением, которое возвращает 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и ^ / $ якоря изменяют каждую букву в скобках.

Смотрите это регулярное выражение.

Другие вопросы по тегам