ich Anzahl von Gruppen aus dieser Zeichenfolge erfassen möge -Regulärer Ausdruck: Wie die optionale Gruppe erfassen
%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.
Die Regex Ich schrieb wie folgt ist -
^%(\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*:(.*);(.*)
Die folgenden Gruppen caputures von der ersten Zeile -
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
Dies wählt nicht die zweite Zeile als das hat nicht; im letzten Abschnitt.
Ich habe versucht, die Gruppe 7 optional
^%(\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*:(.*);?(.*)
Ausgang machen:
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:
aber noch ist es nicht meine Anforderungen erfüllen. Warum 1,7 Linie nicht verschüttet wird, hat es auch; und ich möchte 2,7 Ausgang kommen in 2,8 und 2,7 sollte so leer wie die zweite Zeile nicht kommen;
Gibt es eine Möglichkeit, dies mit Regex zu erreichen?
Ich bin vor ein weiteres kleines Problem mit dem regulären Ausdruck - % Jun 13 01: 10: 00: 942 2016 HP OPTMOD/4/MODULE_IN: -Slot = 3; GigabitEthernet3/0/0: Der Transceiver ist 1000_BASE_SX_SFP. Für diese Linie wird die fünfte Capture-Gruppe 'OPTMOD/4/MODULE_IN wie kommen: -Slot = 3; GigabitEthernet3:' Aber ich will es nur OPTMOD werden. Ich denke, es liegt daran, dass wir mehrere haben: in der Linie. Aber konnte nicht herausfinden, wie man es beheben kann. –