2013-03-01 32 views
0

我試圖在具有一些相似性但不總是一致的目錄中標準化文件名。但是,它們足夠標準。文件名(其中的日期爲月/日/年)的在Ruby中使用正則表達式解析出一大塊文件名

例子:

  • 每週銷售報告022213 LV.xls
  • 每週銷售報告091908 LV-F.xls
  • 銷售週報072508.xls
  • 美國每週銷售V1.0 061308.xls
  • 美國每週銷售Jan0606.xls

我目前的解決方案對於任何可能的字符串組合都是有效的,但很難找到和替換。 x.gsub!(/^Weekly | sales | report | US | US | \ s /,'')

但是,我會假設會有一種方法來查看文件名字符串並獲取塊包含所有日期信息。這將是由左側的空白限定的塊並且以至少4位數結尾。有沒有簡單的方法來完成這個?

回答

2

您的需求爲表示將建議如下:

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

這就是:匹配一個空格字符,然後捕獲零或更多的非空白,其次是4至8位;返回捕獲的文本。

+0

看起來不錯,你可以查看http://rubular.com/只需發佈你的測試字符串(文件名)和上面的正則表達式 – hwatkins 2013-03-01 16:01:49

+0

這很好,非常感謝你! – 2013-03-01 16:05:09

+0

不客氣。請記住,您可以通過點擊綠色勾號標記(以及通過點擊向上箭頭「有幫助」)來將此答案標記爲「正確」。 – Chowlett 2013-03-01 16:19:34