2016-07-28 3 views
1

문자열 s에서 image_bid를 검색해야하며이 경우 해당 문자열을 값 DEBUG으로 바꿀 필요가있는 경우 다음을 시도했지만 시도하지 않았습니다. 누구나 할 수있는 일을 제안 할 수 있습니까?문자열에서 텍스트를 검색하고 해당 값으로 바꾸는 방법

import re 
s = "cols/sel/Pkg/Bin/LA/${image_bid:DEBUG}/" 

match = re.search('image_bid:(\w+)',s) 
print match.group(1) 

if match: 
    final_value = s.replace('image_bid:(\w+)',match.group(1)) 
print final_value 

MY OUTPUT:- 
cols/sel/Pkg/Bin/LA/${image_bid:DEBUG}/ 

Expected output:- 
cols/sel/Pkg/Bin/LA/DEBUG 
+0

뭔가를 원하는 당신은'$을 기대하는 이유 {'와'} /'는 사라지나요? –

+0

그게 받아 들일 수있는 경로가 아니 ... – kemosabee

+0

난 그저 당신의 구현을 실제로 그들을 제거하려고하지 의미합니다. 그것이 의도적인지 또는 감독인지 확실하지 않았습니다. –

답변

0

방법은 대체()는 기존의 발생이 선택적으로 최대로 교체의 수를 제한, 새로운로 대체되었습니다있는 문자열의 복사본을 반환합니다.

그것은, 문자열 지원 정규 표현식에 대한 replace 방법처럼 보인다 대신 re.sub를 사용하지 않는

:

if match: 
    final_value = re.sub(r'\${image_bid:\w+}',match.group(1), s) 
print final_value 
# cols/sel/Pkg/Bin/LA/DEBUG/ 
+0

'/ sel/Pkg/Bin/LA/DEBUG /'와 같이 존재하는 후행 슬래시'/'가 필요합니다. – kemosabee

+0

패턴에서'/'를 제거하여 대체되지 않게 할 수 있습니다. 예상 출력에 표시되지 않기 때문에 추가되었습니다. – Psidom

0

당신은 아마

final_value = re.sub(r'\$\{image_bid\:(\w+)\}/', r'\1', s) 
관련 문제