MySQL REGEXP 匹配/或字段结束

标签 mysql regex

我在 MySQL 数据库 (5.7.17-0ubuntu0.16.04.2) 中有很多路径,用户选择了一系列路径,我想选择所有这些路径和下面的路径,但是我已经遇到问题。

假设用户想要“/root/K”我需要做一个选择:

a. /root/K%
b. /root/K

如何让 REGEXP 匹配字段或/的结尾?

我试过以下方法:

原始查询:

where path REGEXP ('/root/K/|/root/J/J/')  # this works but doesn't show the items in that path, only ones below

where path REGEXP '/root/K[/\z]' # does the same as above
where path REGEXP '/root/K(?=/|$)'   # Get error 1139, repetition-operator invalid

我也试过:Regex to match _ or end of string但这会产生错误 1139

还有什么建议吗?

最佳答案

不支持环视,不支持 MySQL 正则表达式中的 \z anchor 。您可以使用普通的捕获组:

WHERE path REGEXP '/root/K(/|$)'

会匹配

  • /root/K - 文字字符序列
  • (/|$) - / 或条目结束。

关于MySQL REGEXP 匹配/或字段结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43255721/

相关文章:

mysql - 长查询执行时间锁表

mysql - java.io.IOException : Corrupt form data: premature ending 异常

regex - 我怎样才能匹配所有没有用所需的 LaTeX 标记标记的短语?

java - 在Java中过滤一串不需要的字符

PHP将第一个表列id添加到另一个表列id

php - MySQL查询日期范围

MySQL 服务器没有响应

regex - 如何从 Linux 终端使用正则表达式删除文件夹

c# - RegEx 匹配具有 1 个或多个结果的引号

javascript - 使用 JS Regex 获取带有动态尾随值的字符串的第一个值