我以前问过这个问题,现在我编辑它,因为我发现有些行与我之前给出的格式不符......
下面是行的例子:
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
) 或.
(\.
- 它需要转义,因为 。
否则表示“任何字符”)。
我是一名优秀的程序员,十分优秀!