2017-06-01 8 views
-3

私はログファイルを読み込んでいて、ファイル内のパターンと一致しています。それが一致すれば、行の正規表現を行います。Ruby Regex for dateと

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(/ .*$/, "") 

私は上記の方法を試しましたが、何らかの理由で失敗します。パターンに一致した後、ラインに入ってくる

は、だから私は

"East3:00:02:INFO::処理のバケツ2017053007"

を持っています。正規表現を使用してこの "2017053007:00:02"を除外するだけです。

おかげ

+1

あなたは実際にここで達成しようとしていますか?ファイル内の '2017053007:00:02'のようなすべてのタイムスタンプのリストを取得するだけですか?実装を真剣に過度に複雑化しているようです。 –

+0

貼り付けてコピーしているだけです "2017053007:00:02:INFO:処理バケット: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"