0

这就是我现在拥有的:

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
4

3 回答 3

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在否定的lookbehind 中,因为输入字符串中的每个冒号后面都有一个空格。

于 2013-03-12T16:13:50.293 回答
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) 
于 2013-03-12T16:17:12.693 回答
0
重新进口

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

于 2019-07-26T23:55:05.663 回答