RegExp для поиска строки, которая содержит подстроку «123», но не содержит подстроку «234» - PullRequest
0 голосов
/ 07 мая 2019

Необходимо выбрать строки из таблицы, которые содержат одну подстроку (или подстроки) и не содержат других. Важно сделать одно выражение.

Google говорит, что регулярное выражение типа ^ (? =. * Subs1) (?!. * Subs2) $ может работать, но оно не работает для меня (также проверено на https://regexr.com/)

Например

SELECT * FROM TABLE WHERE target_string REGEXP "^(?=.*subs1)(?!.*subs2)$"

bla / subs1 / bla / bla -> true (возвращать как результат запроса)

bla / subs1 / bla / subs2 -> false

бла / бла / сабс2 / бла -> ложь

2 условия в одном выражении не работают (отдельно работают) Спасибо за помощь!

1 Ответ

0 голосов
/ 09 мая 2019
WHERE foo     LIKE '%123%'
  AND foo NOT LIKE '%234%'

WHERE foo REGEXP '123[^4]'  -- rejects '1234', but accepts '123x234' -- OK?

(Это должно работать во всех версиях MySQL или MariaDB.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...