2017-02-08 1 views
2

나는이 코드 조각이 :파이썬은 초기 특수 문자를 포함하여 전체 단어를 대체

import re 


variable_to_be_replaced = '$VAR' 
value_to_set = 'success' 
sample_string = '$VAR VAR $$VAR $VAR1 $VAR1$VAR$VAR2 $VAR' 

print re.sub(r'\b' + variable_to_be_replaced + r'\b', value_to_set, sample_string) 

I 출력이 'success VAR $success $VAR1 $VAR1success$VAR2 success'로하고 난 단지 인쇄 문을 수정할 수 있습니다하고자합니다. 나는 변수 이름이 $로 시작하기 때문에 이것이 작동하지 않는다는 것을 안다. 구분 기호는 일반 단어 구분 기호 (마이너스 1 $ 기호 시작) 여야합니다.

아이디어가 있으십니까?

답변

2

당신은 당신이 정규식으로 원하는 것을 얻을 수 있습니다

공간이나 뒤에 달러 (A $)가있을 때 '$의 VAR를'발견
\$VAR(?=[\s\$]|$) 

. 더 구체적으로 말하자면, '$ VAR', '$ VAR $'또는 '$ VAR'이 문자열의 끝 부분 인 문자열 부분을 식별하기 위해 Positive Lookahead을 사용하고 '$ VAR'부분 만 교체합니다. 대체 문자열과 일치합니다.

여기에서 regex101을 확인하십시오.

출력 :

success VAR $success $VAR1 $VAR1success$VAR2 success 

이 도움이 알려줘!

2

당신과 같이 앞서 부정적인 표정으로 그것을 할 수 있습니다 :

import re 

s_str = '$VAR VAR $$VAR $VAR1 $VAR1$VAR$VAR2 $VAR' 
print re.sub(r'\$VAR(?!\d)', r'success', s_str) 

출력 :

success VAR $success $VAR1 $VAR1success$VAR2 success 

정규식 :

\$VAR(?!\d) - 앞 자리 문자

의 부정적인 모습 '$VAR' 검색

데모 : https://regex101.com/r/EgXlcD/1

관련 문제