2013-03-12 3 views

답변

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' 
귀하의 의견에 콜론의 각 뒤에 공백이 있기 때문에 당신은 부정적인 lookbehind에서 \s 필요

>>> ' '.join(re.findall(r'(?<=:\s)\S+', x)) 
'Joyce 192.111.1.1 192.168.1.1' 

: 당신이 re.findall()를 사용하는 것을 선호하는 경우

그러나, 여기에 현재의 접근 방식과 유사 하나 개의 옵션입니다 끈.

+0

을입니다 정확히 내가 이것에 대해 이야기하고있는 것은 다른 사람에게 쉽게 젠장, 왜 FJ에게 findall을 찾는 대신에 sub를 사용했는지 물어봐서 미안해? – PythonNewbie

+0

@PythonNewbie findall을 사용하는 버전을 추가했지만 일반적으로 lookbehind 또는 lookahead를 사용하지 않는 표현을 쉽게 이해할 수 있으며 sub를 사용하면이를 가능하게합니다. –

+0

흠 감사합니다 alot :) – PythonNewbie

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)