str = "abc3-3213dsads123dsdsaasa7/basic-2.xhtml?"
str[/.+(?=\/)/]
#=> "abc3-3213dsads123dsdsaasa7"
(?=\/)
- это позитивный взгляд .Требуется, чтобы за сопоставленной строкой следовала косая черта.
В качестве альтернативы, в зависимости от потребностей, вы можете использовать регулярное выражение /[^\/]+/
или /.+?-[^\/]+/
.
Вы также можете сделать этолегко без использования регулярного выражения.
str[0, str.index('/')]
#=> "abc3-3213dsads123dsdsaasa7"
Я предположил, что нет никаких ограничений на символы, которые предшествуют косой черте.Это соответствует ограничениям на именование файлов в семействе Unix (включая Linux и OS / X), а именно, имена файлов могут включать любые символы, кроме косой черты и NUL.См. здесь и здесь .Ограничения Windows на имена файлов обсуждаются здесь .