这就是我现在所拥有的:
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&gt;的Result.txt :
Joyce 192.111.1.1 192.168.1.1
答案 0 :(得分:2)
不是找到你想要的文本匹配,而是替换你不想要的东西可能更容易:
>>> 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
,因为输入字符串中的每个冒号后面都有一个空格。
答案 1 :(得分:0)
您的代码略有变化(不要删除空格,并将它们包含在后面的外观中)完美运行:
import re
x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"
m = re.findall('(?<=:\s)\S+', x)
print " ".join(m)
答案 2 :(得分:0)
import re x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1" reg = r"\d{1,3}(?:[.]\d+){3}" m = re.findall(reg, x) for i in m: print(i)
结果: 192.111.1.1 192.168.1.1