옵션 그룹을 캡처하는 방법 -정규 표현식 :이 문자열에서 그룹의 수를 캡처 할
^%(\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*:(.*);(.*)
이것은 다음 그룹을 caputures - 다음과 같이 내가 쓴 정규식은
%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.
에게 첫 줄부터 -
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
이것은 두 번째 줄을 선택하지 않습니다. 마지막 절에서
나는 그룹 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.8 출력을 원한다면 2.8과 2.7은 두번째 라인이 없기 때문에 비어 있어야합니다.
우리가 정규식을 사용하여 이것을 달성 할 수있는 방법이 있습니까?
I는 정규식 작은 또 다른 문제에 직면하고 - 오전 13 01 % : 10 : 00 : 942 2016 HP OPTMOD/4/MODULE_IN : -Slot = 3; GigabitEthernet3/0/0 : 송수신기는 1000_BASE_SX_SFP입니다. 이 줄의 경우, 다섯 번째 캡처 그룹은 으로 표시됩니다. OPTMOD/4/MODULE_IN : -Slot = 3; GigabitEthernet3 : 하지만이 옵션은 OPTMOD로만 설정해야합니다. 나는 그것이 여러 줄로 된 것 같아요. 줄에. 그러나 그것을 고치는 법을 알 수 없었다. –