首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用regex匹配mysql中缺少的单词?

问如何用regex匹配mysql中缺少的单词?
EN

Stack Overflow用户
提问于 2021-05-11 13:23:31
回答 1查看 71关注 0票数 2

我正在与mysql中的正则表达式进行斗争。由于没有正负查找,所以我如何搜索不包含特定子字符串的字符串?我构建了一个regex,它在PCRE中工作得很好,如下所示

代码语言:javascript
复制
/* 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中实现同样的目标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-11 13:46:31

您可以使用

代码语言:javascript
复制
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+,则可以使用

代码语言:javascript
复制
WHERE col REGEXP '^(?!.*\\[table\\b[^\\]\\[]*language).*\\[table\\b'

见regex演示。请注意,在ICU regex语法中,[和]在方括号内都是特殊的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67487676

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档