需要从表中选择包含一个或多个子字符串且不包含其他子字符串的行。做出一种表达很重要。
Google 表示像 ^(?=.*subs1)(?!.*subs2)$ 这样的正则表达式可以工作,但对我不起作用(也在 https://regexr.com/ 上进行了测试)
例如
SELECT * FROM TABLE WHERE target_string REGEXP "^(?=.*subs1)(?!.*subs2)$"
bla/subs1/bla/bla -> true(作为查询结果返回)
bla/subs1/bla/subs2 -> 假
bla/bla/subs2/bla -> 假
一个表达式中的 2 个条件不起作用(单独起作用) 感谢您的帮助!
最佳答案
WHERE foo LIKE '%123%'
AND foo NOT LIKE '%234%'
WHERE foo REGEXP '123[^4]' -- rejects '1234', but accepts '123x234' -- OK?
(这应该适用于所有版本的 MySQL 或 MariaDB。)
关于mysql - RegExp 用于搜索包含子字符串 '123' 但不包含子字符串 '234' 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56026009/