在Ruby中使用Regex来解析一大块文件名

时间:2013-03-01 15:45:00

标签: ruby regex

我正在尝试标准化目录中的文件名,这些文件名有一些相似之处,但并不总是一致的。但是,它们足够标准。

文件名示例(日期为月/日/年):

  • 每周销售报告022213 LV.xls
  • 每周销售报告091908 LV-F.xls
  • 每周销售额072508.xls
  • 每周美国销售额V1.0 061308.xls
  • 每周美国销售额Jan0606.xls

我目前的解决方案是任何可能的字符串组合的有效但丑陋的查找和替换。 x.gsub!(/ ^每周|销售|报告|美国|美国| \ s /,'')

但是,我会假设有一种方法可以查看文件名字符串并获取包含所有日期信息的块。这将是由左边的空白界限并以至少4位数结尾的块。有没有直接的方法来实现这个目标?

1 个答案:

答案 0 :(得分:2)

您所述的要求将提出以下建议:

date_portion = x.match(/\s(\S*\d{4,8})/)[1]

那是:匹配一个空格字符,然后捕获零或多个非空格,然后是4到8位数字;返回捕获的文本。