Группа альтернатив с двумя альтернативами, соответствующими всей строке - PullRequest
0 голосов
/ 24 июня 2018

Я работаю с регулярным выражением, которое возвращает 1 только в том случае, если заданное значение равно A или B.

Я использовал

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

'|' символ ведет себя как "или", но результат не такой, как ожидалось с AB:

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

пока я не ожидаю совпадения.

1 Ответ

0 голосов
/ 24 июня 2018

Ваше текущее решение соответствует

  • ^A - A в начале строки
  • | - или
  • B$ -B в конце строки.

Оператор REGEXP может возвращать частичное совпадение (в отличие от * 1023)* оператор, который требует, чтобы шаблон подстановки совпадал со всей строкой), и, таким образом, может соответствовать ABC и CAB.См. regex demo .

. Вы можете использовать

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

. A|B находится внутри конструкции группировки, и ^ и $ оба изменяютA и B филиал.См. это регулярное выражение demo .

Если эти A и B являются одиночными символами, используйте выражение [AB] в скобках:

'^[AB]$'

где [AB] соответствует A или B, а якоря ^ / $ изменяют каждую букву в скобках.

См. это демонстрационное выражение regex .

...