2014-03-04 3 views
0

Regexp를 사용하여 Nmap 명령의 출력을 일치 시키려고합니다. 두 가지 형식이있을 수 있습니다.Regexp : 그룹으로 묶기

1 형식 (nmap을 찾을 수있는 호스트 이름)

Nmap scan report for 2u4n32t-n4 (192.168.2.168) 

과 (호스트 이름없이) 2 형식

Nmap scan report for 192.168.2.1 

내가 두 호스트 이름과 여기서 ipaddress를 캡처 할 어떠한 호스트 이름이없는 경우 바로 얻을 Ip를 두 번째 형식의 호스트 이름으로 사용합니다.

내가 지금까지 golang에서 정규 표현식에서 시도되었다

Nmap scan report for\\s+([^[:space:]]+)(\\s+\\(([^[:space:]]+)\\))? 

입니다하지만 1 차 형식 (그것이 내가 원하지 않는 나에게 (192.168.2.168) 준)

golang의 결과로 무엇을 가지고 다음과 같다 :

[Nmap scan report for 2u4n32t-n4 (192.168.2.168), 2u4n32t-n4 , (192.168.2.168) , 192.168.2.168] 

및 제 2 형식 (그것이 나에게 내가 원하지 않는 준)는 다음과 같다 :

[Nmap scan report for 192.168.2.1, 192.168.2.1, ] 

올바르게 수행 할 작업은 무엇입니까?

+0

에서 볼 수 있습니까? 당신은 단지 경기를 반복하고 빈 일치를 제거 할 수 있습니다. 그렇지 않으면 첫 번째 형식으로 원치 않는 부분이있는 부분을 고칠 수 있습니다. – Jerry

답변

0

어떻게 이것에 대해 : 당신이 빈 일치를 얻을 수 있다면 정말 문제

Nmap scan report for\s+(?P<hostname>.*?)[\s,] 

action