1

メインフレームのログ行から固定幅の間隔で正確な文字を抽出する正規表現に取り組んでいます (... 正規表現は私の得意分野ではありません)。

以下のサンプル イベントに示すSUCCESSFUL AUDITLOGON COMPLETE、および値を含む固定長フィールドである Status フィールドのフィールド値を抽出したいと考えています。FINAL FAILED AUDIT

この固定長フィールドには多くの値があるため、私がしようとしていたようにリテラル文字列値を実際に抽出することはできません。

代わりに、イベントの位置 54 から始まり、長さが正確に 18 文字の文字を抽出したいと思います。

正規表現や方法などに関するヘルプやアイデアは大歓迎です。

528 LOGON   39690  SECURITY LAPTOP    8481 USER AB11 SUCCESSFUL AUDIT  BBB908AFB 06/20/12 09:11:43PM    
528 LOGON   39692  SECURITY LAPTOP    8495 USER AB11 LOGON COMPLETE    BBB908AFB 06/20/12 09:12:12PM    
528 LOGOFF  39699  SECURITY DESKTOP   4476 USER ABEQ FINAL FAILED AUDITAADAFCC01 06/20/12 09:55:49PM   
4

2 に答える 2

0
  1. 正規表現は、この単純な問題に対する複雑なソリューションです。
  2. 入力形式と必要な出力へのオフセットは固定されているため、入力を 1 行ずつ読み取り、マイナーな文字列処理を行うだけです。
  3. 正規表現がまだ必要な場合は、これが出発点です (ただし、独自の入力番号 54 と 18 は、回答として必要なものと一致しないため、代わりに 47 と 16 で試しました。必要に応じて変更できます) :

    (?<=[a-zA-Z0-9 ]{47})([a-zA-Z0-9 ]{16})

    http://regexr.com?328dm

于 2012-09-24T05:58:23.267 に答える