2013-04-24 66 views
0

我創建的是分析日誌文件的腳本......這裏的線的例子:在第一正則表達式來獲得字符串

data = "09:55:04.125 mta   Messages  I Doc O:SERVER (NVS:SMTP/[email protected]) R:NVS:FAXG3.I0.0101 mid:6393" 
data2= "09:55:05.045 mta   Messages  I Doc O:SERVER (NVS:SMTP/[email protected]) R:ADMIN (NVS:SMTP.0/[email protected]) mid:6397" 

我已經匹配斜槓之間有什麼兩個點,但我注意到,有像第幾行,其中類型「FAXG3.I0.0101」後面沒有斜槓


這裏的正則表達式i美股E:

exp = result = re.findall(r'[\w\.]+(?=:*)',data) # type S & D 

我想要的結果爲 'SMTP', 'FAXG3.I0.0101' 用於第二的第一行和 'SMTP', 'SMTP.0'。 有人可以幫助糾正我的正則表達式來獲得?

回答

1

「NVS:」是否保證在比賽前?如果是這樣,你可以用NVS:([\w\.]+)

re.findall(r'NVS:([\w\.]+)',data) 
['SMTP', 'FAXG3.I0.0101'] 

re.findall(r'NVS:([\w\.]+)',data2) 
['SMTP', 'SMTP.0'] 
1

下應該做的伎倆

>>> for x in re.finditer('(NVS:([\w.]+?)(\s|/))', data2): 
...  print x.groups()[1] 
... 
SMTP 
SMTP.0 
>>> for x in re.finditer('(NVS:([\w.]+?)(\s|/))', data): 
...  print x.groups()[1] 
... 
SMTP 
FAXG3.I0.0101 
相關問題