現在、次の構造のログファイルを解析しています。
1)タイムスタンプ、前に#文字、後に\ n
2)そのタイムスタンプの後に発生し、その後にすべて\nが続く任意の数のイベント
3)繰り返します。
次に例を示します。
#100
04!
03!
02!
#1299
0L
0K
0J
0E
#1335
06!
0X#
0[#
b1010 Z$
b1x [$
...
一見不可解な値をご容赦ください。これらは特定の「イベント」を表すエンコーディングです。
注:イベントエンコーディングでも#文字を使用できます。
私がやろうとしているのは、特定の時間に発生するイベントの数を数えることです。
つまり、タイム100で、3つのイベントが発生しました。
2つのタイムスタンプの間のすべてのテキストを一致させようとしています。一致したテキストで囲まれた改行の数を数えるだけで、イベントの数を数えます。
Pythonの正規表現エンジンを使用しており、次の式を使用しています。
pattern = re.compile('(#[0-9]{2,}.*)(?!#[0-9]+)')
注:{2、}は、少なくとも2桁のタイムスタンプが必要なためです。
タイムスタンプを照合し、別のタイムスタンプに到達するまで他の文字の照合を続けます-照合を終了します。
これが返すものは次のとおりです。
#100
#1299
#1335
だから、私はタイムスタンプを取得しますが、イベントデータはありません-私が本当に気にかけていることです!
その理由は、ネガティブな後ろ姿が「貪欲」だと思っていますが、完全にはわかりません。
これをはるかに簡単にする完全に異なる正規表現があるかもしれません-どんな提案にもオープンです!
どんな助けでも大歓迎です!
-k