Python 我想从“中摘录这些词:&引用;削减

Python 我想从“中摘录这些词:&引用;削减,python,regex,python-2.x,Python,Regex,Python 2.x,我以前问过这个问题,现在我编辑它,因为我发现一些行与我之前给出的格式不一致 下面是一个行的示例: data = "09:55:04.125 mta Messages I Doc O:SERVER (NVS:SMTP/me@domain.com) R:NVS:FAXG3.I0.0101 mid:6393" data2= "09:55:05.045 mta Messages I Doc O:SERVER (NVS:SMTP/me@domain

我以前问过这个问题,现在我编辑它,因为我发现一些行与我之前给出的格式不一致


下面是一个行的示例:

data = "09:55:04.125 mta         Messages       I Doc O:SERVER (NVS:SMTP/me@domain.com) R:NVS:FAXG3.I0.0101 mid:6393"
data2= "09:55:05.045 mta         Messages       I Doc O:SERVER (NVS:SMTP/me@domain.com) R:ADMIN (NVS:SMTP.0/me@domain.fr) mid:6397"

起初,我匹配了斜线和两点之间的内容,但我注意到有些行与第一行类似,其中类型“FAXG3.I0.0101”后面没有斜线


下面是我使用的正则表达式:

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

我想要的结果是第一行是'SMTP','FAXG3.I0.0101',第二行是'SMTP','SMTP.0'。
有人能帮我纠正一下正则表达式吗

您只需更改正则表达式,使其也接受“.”作为有效字符,例如:

import re 
data = "This is a test message I Res O:Myself (KTP:SMTP/me@domain.com) R:KTP:SMS.CLASS/+345854595 id:21"
result = re.findall(r'[\w\.]+(?=:*/)',data)
print result

['SMTP', 'SMS.CLASS']
[\w\.]+
表示您将接受至少由一个“任意字母数字字符和下划线”(
\w
)或
\.
)组成的序列。它需要转义,因为
否则表示“任意字符”)。

应该可以工作:

result = re.findall(r'(?<=:)[\w.]+(?=/)',data)

result=re.findall(r')(?您的正则表达式似乎不太符合问题的标题。您正在检查匹配后是否有0个或更多的
,而不是在。。。