Ruby: Как мне захватить часть строки с помощью регулярного выражения? - PullRequest
0 голосов
/ 20 июля 2010

у меня

  file_ext = attach.document_file_name.capture(/\.[^.]*$/)

но я думаю, что нет метода захвата.

Я пытаюсь получить расширение файла из строки. У меня еще нет файла.

Ответы [ 4 ]

10 голосов
/ 20 июля 2010

Существует также встроенная функция ruby ​​ File.extname :

file_ext = File.extname(attach.document_file_name)

(с той разницей, что File.extname('hello.') возвращает '', , тогда как ваше регулярное выражение вернет '.')

3 голосов
/ 20 июля 2010

Как насчет:

file_ext = attach.document_file_name[/\.[^.]*$/]
2 голосов
/ 04 мая 2011

Если вы хотите использовать регулярное выражение для этого, вы можете просто сделать:

irb(main):040:0> "foo.txt"[/\w*.(\w*)/,1]
=> "txt"
2 голосов
/ 20 июля 2010

Вы можете сделать регулярное совпадение в рубине следующим образом:

file_ext = (/\.[^.]*$/.match(attach.document_file_name.to_s)).to_s

Для получения дополнительной информации, пожалуйста, проверьте http://ruby -doc.org / core / classes / Regexp.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...