これは私が今持っているものです:
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()
ここで使用したい場合は、現在のアプローチに似た 1 つのオプションがあります。
>>> ' '.join(re.findall(r'(?<=:\s)\S+', x))
'Joyce 192.111.1.1 192.168.1.1'
\s
入力文字列の各コロンの後にスペースがあるため、否定後読みでが必要です。
コードを少し変更すると (スペースを削除せず、後ろ向きに含めてください)、完全に機能します。
import re
x = "From: Joyce IP: 192.111.1.1 Source: 192.168.1.1"
m = re.findall('(?<=:\s)\S+', x)
print " ".join(m)