2017-06-01 22 views
-3

我正在讀取日誌文件並匹配文件中的模式;如果匹配,則執行正則表達式。Ruby日期和時間正則表達式

f = File.open(file,"r") 
f.seek(0,IO::SEEK_END) 

while true do 
    select([f]) 
    line = f.gets 
    if line =~ pattern 
    a = line.sub(/ .*$/, "") 

我已經嘗試了上述方法,並且由於某種原因失敗。

所以我

「2017053007:00:02:INFO:處理鬥:East3」

進入線相匹配的模式之後。只需要得到這個「2017053007:00:02」使用正則表達式過濾出來。

感謝

+1

你究竟想在這裏實現什麼?只需在文件中獲得所有時間戳列表,如「2017053007:00:02」?看起來你已經嚴重過度複雜的實現。 –

+0

我只是複製粘貼這個,它工作'「2017053007:00:02:信息:處理桶:East3」.sub(/。* $ /,「」)' –

+0

你不能**正規表達式」。雖然,你可以「**使用**正則表達式」。 – sawa

回答

0

也許你可以試試: ([0-9] +:[0-9] {2}:[0-9] {2})

1
input = "2017053007:00:02 : INFO : Processing bucket : East3" 
input[/(?<=\A\d{10}:\d{2}:\d{2}\s:\s).*/] 
#⇒ "INFO : Processing bucket : East3" 

input[/\S+/] 
#⇒ "2017053007:00:02" 
+0

感謝您的輸入 –

0

沒有REGEX

> a = "2017053007:00:02 : INFO : Processing bucket : East3" 
> a.split.first 
#=> "2017053007:00:02"