正则表达式python字符串忽略特殊字符

时间:2013-03-12 16:08:22

标签: python regex

这就是我现在所拥有的:

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

3 个答案:

答案 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