2016-05-25 2 views
1

Я пытаюсь создать регулярное выражение для извлечения имени программного обеспечения и версии (если есть) с выходом Nmap, например:Regex в матч слова на питоне

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 '

Как я все это делаю?

+0

Да, спасибо, EDITED –

ответ

2

Используйте это регулярное выражение demo:

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

отлично работает! –

0

Просто игнорировать пробельные, чтобы решить первую проблему, а затем использовать Чередование не возвращать версию, если его нет.

(?<=product|version):\s(\S*) 
Смежные вопросы