mysql正则表达式以匹配路径

mysql正则表达式以匹配路径,mysql,Mysql,我的表有如下数据 /my/path/project1/1.ft2.3 /my/path/project1/1.2.3/1.2.3.0/ /my/path/project1/1.2.3/1.2.3.0/ /my/path/project1/1.2.3/1.2.3.0/test /my/path/project1/hash3.4.5.6 /my/path/project1/7.8.9 我的意图是使用正则表达式来匹配 /my/path/project1/1.ft2.3 /my/path/projec

我的表有如下数据

/my/path/project1/1.ft2.3
/my/path/project1/1.2.3/1.2.3.0/
/my/path/project1/1.2.3/1.2.3.0/
/my/path/project1/1.2.3/1.2.3.0/test
/my/path/project1/hash3.4.5.6
/my/path/project1/7.8.9
我的意图是使用正则表达式来匹配

/my/path/project1/1.ft2.3
/my/path/project1/hash3.4.5.6
/my/path/project1/7.8.9
给定一条路径,一个好的正则表达式基本上要匹配什么?匹配
/

我用的这个和所有的都匹配

SELECT * FROM mytable WHERE path REGEXP '/my/path/project1/.*'; 

您可以尝试
REGEXP'\/my\/path\/project1\/.'

SELECT '/my/path/project1/1.ft2.3' REGEXP '\/my\/path\/project1\/.*' AS result;
+--------+
| result |
+--------+
|      1 |
+--------+
要选择指定的值,请尝试以下操作:

SELECT * FROM (
  SELECT '/my/path/project1/1.ft2.3' AS f
  UNION SELECT '/my/path/project1/1.2.3/1.2.3.0/'
  UNION SELECT '/my/path/project1/1.2.3/1.2.3.0/'
  UNION SELECT '/my/path/project1/1.2.3/1.2.3.0/test'
  UNION SELECT '/my/path/project1/hash3.4.5.6'
  UNION SELECT '/my/path/project1/7.8.9'
) t
WHERE f REGEXP '\/my\/path\/project1\/(1\.ft2\.3|hash3\.4\.5\.6|7\.8\.9)'
;
结果:

+-------------------------------+
| f                             |
+-------------------------------+
| /my/path/project1/1.ft2.3     |
| /my/path/project1/hash3.4.5.6 |
| /my/path/project1/7.8.9       |
+-------------------------------+

以下正则表达式适用于您的用例:

^/my/path/project1/[^/]+$

^/my/path/project1/[.0-9]+$
修改了我的问题。不幸的是,我的数字和字母表都要匹配。
^/my/path/project1/[^/]+$
为什么不在路径像“/my/path/project1/%”的地方使用
呢?@DanFromGermany会匹配他不想匹配的
/my/path/project1/1.2.3.0/test
。不幸的是,这对@vladmin没有帮助。这与/my/path/project1匹配。