Ruby中的Regexs获取文件名
我正在使用以下行提取html文件的文件名:Ruby中的Regexs获取文件名,ruby,regex,Ruby,Regex,我正在使用以下行提取html文件的文件名: filename = File.basename(input_filename, ".*") 当前打印不包括.html扩展名的完整文件名 所有文件都以http^x.x.edu^1^2的形式存储所有文件名都以http^开头并包含edu^我想要的是提取2,它会发生变化,但它始终是.edu之后的第二个元素。我尝试过破坏性的gsub!但是我对正则表达式的理解很弱。一个示例输入字符串会有所帮助,但是假设我理解url结构,您根本不需要正则表达式: require
filename = File.basename(input_filename, ".*")
当前打印不包括.html扩展名的完整文件名
所有文件都以http^x.x.edu^1^2的形式存储所有文件名都以http^开头并包含edu^我想要的是提取2,它会发生变化,但它始终是.edu之后的第二个元素。我尝试过破坏性的gsub!但是我对正则表达式的理解很弱。一个示例输入字符串会有所帮助,但是假设我理解url结构,您根本不需要正则表达式:
require 'uri'
File.basename(URI.parse('http://subdomain.domain.edu/one/two').path)
=> 'two'
假设您的输入名为filename,则此操作应该有效: .gsub/\S*.edu将删除TLD.edu后第一个斜杠的所有内容 然后我们使用/\w+/regex扫描剩下的/some/other/file.html,结果是['some'、'other'、'file'、'html']。选择扫描的第二个元素[1]将得到.edu TLD之后的第二个元素
这并不漂亮,但它应该完成这项工作——如果有人有任何想法,我希望看到一种更优雅的方式来完成它 你能给我一个更清楚的例子,说明你的输入字符串是什么,以及你想从中提取什么吗?另外,你能包括你尝试过的代码吗?http ^^ subdomain.domain.edu^ same^ different1^ continue^ continue^ continue好的解决方案它确实有效,但是我发现filename.split^[4]是一个更好的解决方案。谢谢你!是的,这是一个更简单的解决方案。你只需在问题中加入关于正则表达式的评论,让我们都看不到:
base_file = filename.gsub(/(\S)*.edu/, '').scan(/\w+/)[1]