Ruby:如何使用正则表达式捕获字符串的一部分?

时间:2010-07-20 17:41:57

标签: ruby regex

我有

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

但我想没有方法捕获。

我正在尝试从字符串中获取文件扩展名。我还没有这个文件。

4 个答案:

答案 0 :(得分:10)

还有内置的ruby函数File.extname

file_ext = File.extname(attach.document_file_name)

(区别在于 File.extname('hello.') 返回 ''而你的正则表达式将返回 {{1} }

答案 1 :(得分:3)

怎么样:

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

答案 2 :(得分:2)

你可以在ruby中进行RegEx匹配,如下所示:

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

有关详情,请查看http://ruby-doc.org/core/classes/Regexp.html

答案 3 :(得分:2)

如果您想使用正则表达式执行此操作,您只需执行以下操作:

irb(main):040:0> "foo.txt"[/\w*.(\w*)/,1]
=> "txt"