有没有人发现 REGEX "\b" 在 MYSQL 中不起作用?
Posted
技术标签:
【中文标题】有没有人发现 REGEX "\\b" 在 MYSQL 中不起作用?【英文标题】:Has anyone found that REGEX "\b" doesn't work in MYSQL?有没有人发现 REGEX "\b" 在 MYSQL 中不起作用? 【发布时间】:2011-09-18 04:30:38 【问题描述】:有没有人发现 REGEX "\b" 在 mysql 中不起作用?
我有一个很好的正则表达式,可以很好地使用正则表达式引擎
^(//)?w7\b但是当我将它用作 MYSQL 查询的一部分时
WHERE ( e.department REGEXP '^(//)?w7\b' )它将不匹配。如果我删除 \b 组件,匹配效果很好,但它不符合我对 \b 所需的准确性(基本上我只需要匹配整个单词 W7)
谢谢!
【问题讨论】:
MySQL 使用POSIX like regular expressions,请参阅REGEXP 的 MySQL 手册 【参考方案1】:对于 MySQL 8.0.4 之前的 MySQL 版本,REGEXP
(MySQL 5.6 ref) 文档指出词开始/词尾标记是:
[[:<:]], [[:>:]]
这些标记代表单词边界。它们分别匹配单词的开头和结尾。
试试:
WHERE ( e.department REGEXP '^(//)?w7[[:>:]]' )
After 8.0.4, \b
用于字边界。
【讨论】:
在早期版本的 MySQL 中可能已经说过了,但是您的链接现在将我带到了 8.0 文档,该文档 not 明确表示早期版本没有使用 \ b 单词标记。它说“Spencer 库支持单词开头和单词结尾边界标记([[:<:>:]] 表示法)。ICU 不支持。对于 ICU,您可以使用 \b匹配单词边界;”,因此当前库明确不允许旧单词标记,但没有明确表示旧库不允许 \b。 @Auspex:已更新。文档通常不会详尽列出他们不支持的内容,否则会浪费大量纸张。 当然。然而,我对 8.0 文档的阅读让我认为 either 形式在旧版本中是有效的,这就是我认为我需要评论的原因。以上是关于有没有人发现 REGEX "\b" 在 MYSQL 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有环视的情况下在 RegEx 中捕获“搜索”而不是“/搜索”?
Django WeasyPrint CSS 集成警告:没有基本 URI 的相对 URI 引用:<link href="/static/css/bootstrap.min.css&quo
c#大于等于3小于等于99正则表达式怎么写? (Regex.IsMatch(textBox1.Text, "[3-9]1,"))