2017-04-18 5 views
1

ログファイルからイベントを抽出するための正規表現とそれが発生した時刻を加えようとしています。残念ながら、サードパーティのロガーは、記録されたテキストに非同期でタイムスタンプを挿入するため、ログファイルはあまり構造化されていません。現在、私は正規表現があるパターンを見つけるための正規表現とその前の別のテキストパターンの最初の出現

[2017/4/16 2:28:29AM] (I) Radio mode changed to 
SYSAXRADIO_E_STATE_PAGER_RX_SYNC on 170.9 MHz 

[2017/4/16 2:28:37AM] Tock = 1718 
(I) IDTAG TAG : -90dBm : ID:00000015fd6c 
(I) *************** 
(I) ID TAG DETECTED 00000015FD6C 
(I) *************** 

(?<=2017)[\s\S]*?ID:00000015fd6c

私がしたい:

[2017/4/16 2:28:37AM] Tock = 1718 
(I) IDTAG TAG : -90dBm : ID:00000015fd6c 

が、私が手に:私は例があるID:00000015fd6c

でイベントを識別することができ

[2017/4/16 2:28:29AM] (I) Radio mode changed to 
SYSAXRADIO_E_STATE_PAGER_RX_SYNC on 170.9 MHz 

[2017/4/16 2:28:37AM] Tock = 1718 
(I) IDTAG TAG : -90dBm : ID:00000015fd6c 

私が望むテキストは、一致するテキストの前の最初のタイムスタンプまで "ID:00000015fd6c"を含むすべてです。

助けてください?

+0

「ID」は固定ですか? – Rahul

答えて

1

あなたはこのようtempered greedy tokenを使用することができます。

\[2017\/(?:(?!\[\d{4}\/\d{1,2}\/\d)[\s\S])*?ID:00000015fd6c 
     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

regex demo

詳細

  • \[2017\/を参照してください - 文字列
  • (?:(?!\[\d{4}/\d{1,2}/\d)[\s\S])*? - 任意のシンボルを、0+時折 - リテラル[
  • \d{4}\/\d{1,2}\/\dから4桁、/、1又は2桁、/、数字
  • ID:00000015fd6c
    • \[:シーケンスを開始しない可能な限り少ないようurrences、 - ID:00000015fd6c文字列
  • +1

    ありがとうございます。それは私のために働く! –

    関連する問題