我正在尝试使用以下正则表达式解析nmap输出以进行服务发现。
regex = "(?P<ports>[\d]+)\/(?P<protocol>tcp|udp)\s+(?P<state>open|filtered|closed)\s+(?P<service>[\w\S]*)\s+(?P<reason>\S*\s+\S+\s+\S*(?=\w)\w)(?:\n|(?P<version>.*))"
它可以使用以下模式解析输出。
PORT STATE SERVICE REASON VERSION
80/tcp open http str1 str2 str3 version string here
但是无法正确解析以下输出。
PORT STATE SERVICE REASON VERSION
161/tcp filtered snmp no-response
是否有任何单一的正则表达式可以解析上述两种模式?
答案 0 :(得分:0)
您可以为硬编码no-response
添加替代方案,它会有帮助吗?
(?P<ports>[\d]+)\/(?P<protocol>tcp|udp)\s+(?P<state>open|filtered|closed)\s+(?P<service>[\w\S]*)\s+(?P<reason>(:?\S*\s+\S+\s+\S*(?=\w)\w)|(:?no-response))(?:\n|(?P<version>.*))