MySQL регулярное выражение для сопоставления путей

0

В моей таблице есть такие данные, как

/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

Что такое хорошее регулярное выражение, которое в основном соответствует, учитывая путь - для соответствия <path>/<match>/?

Этот я использую все совпадения

SELECT * FROM mytable WHERE path REGEXP '/my/path/project1/.*'; 
Теги:

2 ответа

1
Лучший ответ

Следующее регулярное выражение будет работать для вашего прецедента:

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

Вы можете попробовать 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       |
+-------------------------------+
  • 0
    К сожалению, это не поможет @vladmir. Это соответствует всему с / my / path / project1.
  • 0
    @sam Я обновил свой ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню