>Не понимаю этого стремления использовать везде где нужно и не нужно регулярные выражения.
стремления-то нет, просто в первом сообщении говорилось о "строках вида n", а строки могут быть и полями в БД, и строками в plain-text\xml файле, и т.п.
> Как я суффикс выдерну тебе без регулярки? Научи чтоли.
Нужно изначальный формулировать вопрос точнее. В твоем вопросе не сказано о том, что суффикс может быть каким угодно, а указан конкретно tar.gz.
2volh: если ты имеешь в виду расширение, то это File.extname. только он в руби идиотический малость, и на file.tar.gz выдаст ".gz"
Он не идиотический, а вполне нормальный. Нет никакой договоренности о том, что такое расширение файла, поэтому каждый как понимает, так и делает. Что в данном случае является расширение .tar.gz или .gz? Я сколнен думать, что .gz.
мне кажется твоя задача не имеет общего решения: ты ищешь n-ый символ с конца, а для такого автомата нужно как минимум n состояний. это в свою очередь значит, что ты вынужден писать регексп для "*.бу", *.бу.бу*, "*.бу.бу.бу",... по отдельности (ну или один регекс в виде их композиции).
я такого не говорил, я лишь утверждаю, что универсальное решение будет вида
"filename.tar.sdfsd.bz2".reverse.gsub(/(.*\.)(.*)$/){ $2.reverse + "_suffix" + $1.reverse}