Поскольку вы указали, что значение, которое вы хотите всегда иметь «/» немедленно прежде чем он (и ни после него) и «_» сразу же после этого, вы можете использовать это родовое регулярное выражение:
^.*/(.*)_.*$
Вот почему это будет работать:
^
соответствует началу строки
.*/
совпадает с любым количеством символов до косой черты - это жадный, поэтому он не будет идти до последнего слеша в значении входного
(.*)
совпадает с любым количеством символов и захватывает результата
_.*
матчи подчеркивание, а затем любое число символов
$
соответствует концу строки
Сопоставляя все, что угодно до последнего «/», а затем ничего после «_», вы легко изолируете нужное значение.
ПРИМЕЧАНИЕ. Я не знаю, отличается ли синтаксис регулярного выражения Ruby от этого, поэтому ваш пробег может отличаться.
-
EDIT: Похоже, что в Ruby, вы не могли бы нуждаться/хотите ^
или $
в начале и в конце.
Можете ли вы привести несколько дополнительных примеров исходных строк? У них всегда будет «_web.m4v» в конце? Будет ли у вас всегда значение «/» до него? – TLS
@TLS Сообщение обновлено. – Shpigford