MySQL REGEXP匹配/或字段结束

时间:2017-04-06 12:49:19

标签: 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

还有其他建议吗?

1 个答案:

答案 0 :(得分:1)

不支持lookarounds,而不支持MySQL正则表达式中的\z锚点。您可以使用正常的捕获组:

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

匹配

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