この文字列からグループの数を取得したい -
%May 11 10:03:49:448 2000 AB-CDE SHELL/6/SHELL_CMD: -Task=vt0-IPAddr=172.0.0.0-User=manager; Command is display info
%May 11 10:03:51:122 2000 AB-CD-E SSH/6/SSH_LOGOUT: STEL user manager (IP: 172.0.0.0) logged out.
私が書いた正規表現は次のとおりです-
^%(\w{3})\s+(\d+)\s*([0-9]+\s?:\s?[0-9]+\s?:\s?[0-9]+):[0-9]+\s*(\d{4})?\s*\S*\s*(.*)/(\d+)/\S*:(.*);(.*)
これにより、最初の行から次のグループがキャプチャされます -
1. Group: May
2. Group: 11
3. Group: 10:03:49
4. Group: 2000
5. Group: SHELL
6. Group: 6
7. Group: -Task=vt0-IPAddr=172.0.0.0-User=manager
8. Group: Command is display info
; がないため、これは 2 行目を選択しません。最後のセクションで。
グループ7を任意にしてみた
^%(\w{3})\s+(\d+)\s*([0-9]+\s?:\s?[0-9]+\s?:\s?[0-9]+):[0-9]+\s*(\d{4})?\s*\S*\s*(.*)/(\d+)/\S*:(.*);?(.*)
出力:
1.1 Group: May
1.2. Group: 11
1.3. Group: 10:03:49
1.4. Group: 2000
1.5. Group: SHELL
1.6. Group: 6
1.7. Group: -Task=vt0-IPAddr=172.0.0.0-User=manager; Command is display info
1.8. Group:
2.1. Group: May
2.2. Group: 11
2.3. Group: 10:03:51
2.4. Group: 2000
2.5. Group: SSH
2.6. Group: 6
2.7. Group: STEL user manager (IP: 172.0.0.0) logged out.
2.8. Group:
それでも私の要件を満たしていません。なぜ 1.7 ラインがこぼれないのですか? そして、2.7 の出力を 2.8 に入れたいのですが、2.7 は 2 行目にないので空にする必要があります。
正規表現を使用してこれを達成する方法はありますか?