如何使用正则表达式匹配mysql中缺少的单词

如何使用正则表达式匹配mysql中缺少的单词,mysql,regex,Mysql,Regex,我正在努力使用mysql中的正则表达式。既然没有正/负lookbehinds/aheads,我如何搜索不包含特定子字符串的字符串? 我构建了一个正则表达式,它可以在PCRE中正常工作,如下所示 /* example where it should match entry 1: entry 1: ...lorem ipsum [table mode="foo" offset="1"] dolor sit... entry 2: ...lorem ipsum

我正在努力使用mysql中的正则表达式。既然没有正/负lookbehinds/aheads,我如何搜索不包含特定子字符串的字符串? 我构建了一个正则表达式,它可以在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).*\]'
/*应与条目1匹配的示例:
条目1:…lorem ipsum[表格模式=“foo”offset=“1”]多洛坐。。。
条目2:…lorem ipsum dolor sit。。。
条目3:…lorem ipsum[table language=“en”mode=“foo”]dolor sit。。。
*/    
'\[table.*(您可以使用

WHERE col NOT REGEXP'\\[table[^][]*language'和类似“%[table%”的col
NOT REGEXP'\\[table[^][]*language'
条件确保记录中不存在
[table
标记和
语言
单词,并且
类似“%[table%”
条件匹配包含
[table
字符串的记录

正则表达式详细信息:

  • \[表格
    -
    [表格
  • [^][]*
    -除
    [
    ]
    之外的零个或多个字符
  • 语言
    -文字字符串
如果您使用的是MySQL v8+,那么可以使用

WHERE col REGEXP'^(?。*\[table\\b[^\]\[]*语言)。*\\[table\\b'

请参阅。注意,在ICU正则表达式语法中,
[
]
在方括号内都是特殊的。

使用NOT REGEXP。我不知道这会有什么帮助,因为我不想反转正则表达式?我仍然想找到存在“[table…]”的位置。当我不编写REGEXP时,我将拥有除“[table…]”之外的所有内容'匹配。使用2个条件。第一个-
REGEXP'\[table.*'
,第二个-
NOT REGEXP'\[table[^]]]+language'