-2

出力内の特定の文字列と一致する必要があるプロジェクトに取り組んでいます。

ここにサンプルがあります:

user code   timestamp                   Action Name                 S#TPLC Field Name  User code group profile              
SNGLASK     2012-05-30-20.33.53.003000  Insert User                 I                  TEST5       DISPLAY
SNGLASK     2012-05-23-22.06.44.422000  Change Password RSO part    U     LERAPR      SNGCHIS     FULL_AUTH
SNGLASK     2012-05-30-20.34.39.066000  Insert User Group Profil    I                             *NONE

基本的に、スペースの後の各行が次の列に属していることを理解する必要があるアプリケーションがあります。次に、アクション名の後、すべてを他のものとして扱うことができます。したがって、私は以下のような正規表現形式を出しました:

REGEX = ^([^\s]+)\s+([^\s]+)\s+([^\s]+)s(.*)$
FORMAT = userCode::"$1" TimeStamp::"$2" ActionName::"$3" Others::"$4"

戦略は、文字列を認識し、その後のスペースを無視することです。ただし、これはアクション名の間にスペースがある可能性があるため、アクション名まで機能します。したがって、私の問題は、入力として「ユーザーの挿入」と別の入力として「パスワードRSO部分の変更」が必要なように、正規表現を使用してアクション名内の文字列を認識させる方法です。

4

1 に答える 1

1

次のようにマルチパート ワードを実行します。

((\S+\s)+)

これは、1 つのスペースで区切られた 1 つ以上の単語を表します。したがって、正規表現は次のようになります。

^((\S+\s)+)\s+(\S+)\s+((\S+\s)+)\s+(.*)$
于 2012-06-05T02:21:19.590 に答える