Как составить регулярное выражение для поиска подстроки (первое и последнее вхождение)?

121
13 января 2022, 22:00

Есть строка img/egor/фывыв/ Пытаюсь найти подстроку img/ регуляркой (.*\/), но находит все вхождения. Как ограничить до первого? И отдельным рег. выражением взять последнее вхождение.

Answer 1

Один из вариантов — ограничивать набор подходящих символов, вместо точки писать [^\/], то есть все символы, кроме слеша.

^[^\/]*\/?

Первая папка в пути со слешем, если он есть. Самый первый символ крышка ^ означает совпадение с началом строки.

\/?[^\/]*$

Это самый последний сегмент пути со слешем, если есть. Доллар $ означает совпадение с концом строки.

UPDATE

Совсем забыл, что слеши требуют экранирования в регэкспах. Вместо / надо писать \/. Сейчас работает, см. https://regex101.com/r/njDqHf/1

READ ALSO
Mysql удаление копий

Mysql удаление копий

Всем приветНе силён в sql, но есть необходимость удалить все копии записей, кроме первой, где Name одинаковый

139
Системе тарификации

Системе тарификации

Нужен совет по системе тарификации

77
Delphi - последний запущенный поток

Delphi - последний запущенный поток

Есть запрос MySQL, выполняется долго, поэтому выполняю его в потокеИспользую для этого TThread

85