RegExp搜索包含子字符串“ 123”但不包含子字符串“ 234”的字符串

时间:2019-05-07 15:31:54

标签: mysql regex regex-lookarounds

有必要从表中选择包含一个或多个子字符串而不包含其他子字符串的行。表达一个表情很重要。

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个条件不起作用(单独起作用) 感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

WHERE foo     LIKE '%123%'
  AND foo NOT LIKE '%234%'

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

(这应该在所有版本的MySQL或MariaDB中都可以使用。)