Ruby中的正则表达式获取文件名

时间:2012-03-26 23:26:45

标签: ruby regex

我使用line:

提取html文件的文件名
filename = File.basename(input_filename, ".*")

目前打印的完整文件名不包括.html扩展名

所有文件都以http^x.x.edu^1^2的形式存储,所有文件名都以http^开头,并包含edu^我想要的是提取 2 (这些更改) )但它始终是.edu之后的第二个元素。我尝试过破坏性的gsub!,但我对正则表达式很弱。

2 个答案:

答案 0 :(得分:0)

示例输入字符串会有所帮助,但假设我理解了url结构,你根本不需要正则表达式:

require 'uri'
File.basename(URI.parse('http://subdomain.domain.edu/one/two').path)

=> 'two'

答案 1 :(得分:0)

这应该有效,假设您的输入被称为filename

base_file = filename.gsub(/(\S)*.edu/, '').scan(/\w+/)[1]

{1}}删除TLD(.edu)之后的第一个斜杠。

然后我们使用导致.gsub(/(\S)*.edu, '')的{​​{1}}正则表达式扫描左边的/some/other/file.html/\w+/)。选择扫描的第二个元素(['some','other','file','html'])为我们提供了.edu TLD之后的第二个元素。

它并不漂亮,但应该完成工作 - 如果有人有任何想法,我很乐意看到更优雅的方式!