2014-07-23 2 views
-4

У меня есть этот \ п отделенный вывод команды:Использование Regex для получения значений в питона

Check_mk version 1.2.2p2 

radwin_rssi   WARN - Device received signal strength indication is -69 (rssi=-69;-50;-85;;) 

radwin_uas   OK - Device uas is 0          (uas=0;;;;) 

radwin_uptime  OK - up since Sun Jan 5 15:17:15 2014 (199d 02:29:13) (uptime=17202553;;;;) 

я должен получить последние значения каждой строки, содержащиеся между(), только.

Например, нет ничего, чтобы попасть в номер 1, потому что нет() скобок.

Сходство для линии номер 2, есть пустая строка.

Для строки номер 3, я должен получить rssi = -69; -50; -85 ;;, который заключен между() скобками.

Сходство для последней строки, я не должен получать 199d 02:29:13, но uptime = 17202553 ;;;; (разумеется)

Как это сделать в python ??

+0

Что бы ваш ожидаемый выход? –

+0

Что вы пытались? ** Отправьте свой код. ** –

ответ

2

Используйте предпросмотр и просмотра назад,

(?<=\()[^)]*(?=\)$) 

DEMO

>>> import re 
>>> s = """ 
... Check_mk version 1.2.2p2 
... 
... radwin_rssi   WARN - Device received signal strength indication is -69 (rssi=-69;-50;-85;;) 
... 
... radwin_uas   OK - Device uas is 0          (uas=0;;;;) 
... 
... radwin_uptime  OK - up since Sun Jan 5 15:17:15 2014 (199d 02:29:13) (uptime=17202553;;;;)""" 
>>> m = re.findall(r'(?<=\()[^)]*(?=\))', s) 
>>> m 
['rssi=-69;-50;-85;;', 'uas=0;;;;', 'uptime=17202553;;;;'] 
+0

OP хочет только последний набор круглых скобок на любой строке, а не только в любом наборе круглых скобок. ['\ (([^)] +) \) $'] (http://regex101.com/r/rT2dY0/1) - это то, что ищет OP. – RevanProdigalKnight

+0

обновлено см. Http://regex101.com/r/iE2xM4/4 –

Смежные вопросы