我正在与mysql中的正则表达式进行斗争。由于没有正负查找,所以我如何搜索不包含特定子字符串的字符串?我构建了一个regex,它在PCRE中工作得很好,如下所示
/* example where it should match entry 1:
entry 1: ...lorem ipsum [table mode="foo" offset="1"] dolor sit...
entry 2: ...lorem ipsum dolor sit...
entry 3: ...lorem ipsum [table language="en" mode="foo"] dolor sit...
*/
'\[table.*(?<=language).*\]'我如何在MYSQL中实现同样的目标?
发布于 2021-05-11 13:46:31
您可以使用
WHERE col NOT REGEXP '\\[table[^][]*language' AND col LIKE '%[table %'NOT REGEXP '\\[table[^][]*language'条件确保记录中没有包含language字的[table标记,并且LIKE '%[table %'条件匹配包含[table字符串的记录。
Regex详细信息:
\[table - [table[^][]* - [和]以外的零或多个字符language -一个文字字符串如果使用的是MySQL v8+,则可以使用
WHERE col REGEXP '^(?!.*\\[table\\b[^\\]\\[]*language).*\\[table\\b'见regex演示。请注意,在ICU regex语法中,[和]在方括号内都是特殊的。
https://stackoverflow.com/questions/67487676
复制相似问题