You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL 8.0.28 ICU正则筛选含'off'且排除用户名含'off'的推特数据

MySQL 8.0 推特内容筛选正则实现

匹配规则说明

筛选逻辑需要同时满足两个要求:

  • 推文内容中存在独立单词off
  • 所有@提及的用户名(@后到下一个相邻分隔符之间的内容)中,任意位置都不出现off片段,覆盖@offersforyou(off在开头)、@groffers(off在中间)等所有用户名带off的场景

可直接使用的SQL代码

基础场景(用户名后以空格分隔):

-- 表名、字段名替换成你实际的名称即可
SELECT * FROM twitter_dataset
WHERE tweet_text REGEXP '^(?!.*@[^ ]*off).*\\boff\\b.*$';

适配用户名后紧接标点的场景(比如@groffers,、@offersforyou!这类常见推文格式):

SELECT * FROM twitter_dataset
WHERE tweet_text REGEXP '^(?!.*@[^ @,.:;!?\n]*off).*\\boff\\b.*$';

正则逻辑拆解

MySQL 8.0.28的REGEXP基于ICU正则引擎实现,支持环视语法,可以用单条正则完成全逻辑过滤,不需要多层嵌套字符串处理函数,各部分含义如下:

  • ^:锚定字符串起始位置
  • (?!.*@[^ ]*off):负向前瞻校验,只要字符串任意位置存在「@开头、后续连续非分隔字符中包含off」的模式(也就是带off的@用户名),直接判定匹配失败,对应剔除逻辑
  • .*\\boff\\b:匹配正文中的独立单词off,\\b是单词边界符,避免把office、offer、offload这类仅包含off字符片段的词误判
  • .*$:匹配字符串剩余内容直到结束

注意事项

  • MySQL字符串中反斜杠需要转义,因此单词边界符要写成\\b,不要直接写\b
  • 默认REGEXP是大小写不敏感匹配,如果需要严格匹配小写的off,可以在REGEXP前加BINARY关键字开启大小写敏感匹配
  • 可以根据实际推文的标点情况,调整[^ ]或者[^ @,.:;!?\n]里的分隔符列表,覆盖更多边界场景

内容的提问来源于stack exchange,提问作者swapnilindahood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 19:24:28