如何使用正则表达式匹配mysql中缺少的单词
我正在努力使用mysql中的正则表达式。既然没有正/负lookbehinds/aheads,我如何搜索不包含特定子字符串的字符串? 我构建了一个正则表达式,它可以在PCRE中正常工作,如下所示如何使用正则表达式匹配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
/* 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'
。