这就是我现在拥有的:
import re
x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"
x = x.replace(' ', '')
m = re.findall('(?<=:)\S+', x)
print m
我想有这样的输出来制作这个$ script.py > result.txt:
Joyce 192.111.1.1 192.168.1.1
而不是找到你想要的文本的匹配结果,它可能更容易替换你不想要的东西:
>>> import re
>>> x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"
>>> re.sub(r'\w+:\s', '', x)
'Joyce 192.111.1.1 192.168.1.1'
但是,如果您更喜欢在re.findall()
此处使用与您当前方法类似的一个选项:
>>> ' '.join(re.findall(r'(?<=:\s)\S+', x))
'Joyce 192.111.1.1 192.168.1.1'
您需要\s
在否定的lookbehind 中,因为输入字符串中的每个冒号后面都有一个空格。
对您的代码稍作更改(不要删除空格,并将它们包含在后面的外观中)可以完美地工作:
import re
x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"
m = re.findall('(?<=:\s)\S+', x)
print " ".join(m)
重新进口 x =“来自:乔伊斯 IP:192.111.1.1 来源:192.168.1.1” reg = r"\d{1,3}(?:[.]\d+){3}" m = re.findall(reg, x) 对于我在 m 中: 打印(一)
结果:192.111.1.1 192.168.1.1