Регулярное выражение для всех перед прокруткой вперед или назад

Мне нужно регулярное выражение, которое найдет все в строке до и включая последние\или/.

Например, c:\directory\file.txt должно привести к c:\directory\

Ответы

Ответ 1

Попробуйте следующее: (Rubular)

/^(.*[\\\/])/

Пояснение:

^      Start of line/string
(      Start capturing group
.*     Match any character greedily
[\\\/] Match a backslash or a forward slash
)      End the capturing group  

Соответствующая косая черта будет последней из-за жадности .*.

Если ваш язык поддерживает (или требует) его, вы можете использовать другой разделитель, чем / для обычного выражения, так что вам не нужно избегать прямой косой черты.

Кроме того, если вы разбираете пути к файлам, вы, вероятно, обнаружите, что на вашем языке уже есть библиотека, которая делает это. Это было бы лучше, чем использование регулярного выражения.

Ответ 2

^(.*[\\\/])[^\\\/]*$

Ответ 3

Если вы используете sed, например, вы можете сделать это, чтобы вывести все до последней косой черты:

echo "/home/me/documents/morestuff/before_last/last" | sed s:/[^/]*$::

Он выведет:

/home/me/documents/morestuff/before_last