python 上的正则表达式到单词匹配

Regex to word match on python

我正在尝试创建一个正则表达式来从 Nmap 输出中提取软件名称和版本(如果存在),例如:

ftp (product: vsftpd version: 2.3.4 ostype: Unix)

我应用了正则表达式:/product: (.*) version: (.*)/

它给出了结果:

group(1) = vsftpd ,  group(2) = 2.3.4 ostype: Unix 

而我只需要版本 (2.3.4)

此外,版本应该是可选的我尝试了不同的东西但它不起作用 示例:

product: Apache Jserv extrainfo: Protocol v1.

因为没有版本我只需要`Apache Jserv'的部分

我如何制作所有这些?

使用这个正则表达式 demo:

product: ([\w ]+)(?:version: ([\w.]+)| \w+:)

只需忽略空格即可解决您的第一个问题,然后如果存在 none.

,则使用替代 return 版本
(?<=product|version):\s(\S*)