2016-08-22 3 views
1

가 나는 재이며 그 값이 마이너스 10 로 값을 대체 할 통해 정규 표현식이 값 :파이썬 대체 재 그룹

re.compile(r'<stuff[^\>]*translate\((?P<x>\d*),(?P<y>\d*)\)"/>') 

내가 X 및 Y기를 교체 할있다. 이렇게하려면 re.sub을 사용하고 함수를 전달하고 싶습니다. 그러나이 함수에서 가장 쉽게 x와 y 값을 빼고 입력 값과 동일한 문자열을 어떻게 만들 수 있습니까?

+0

은 [이] 한 번 봐 (http://stackoverflow.com/questions/2763750/how-to-replace-only-part-of를 타고 -the-match-with-python-re-sub) 대답은 더 깨끗한 방법을 위해 – FujiApple

답변

0

re.sub docs은 대체 기능을 사용하는 좋은 예입니다. 귀하의 경우, 이것은 작동합니다 :

import re 

def less10(string): 
    return int(string) - 10 

def replacer(match): 
    return '%s%d,%d%s' % (match.group('prefix'), 
          less10(match.group('x')), 
          less10(match.group('y')), 
          match.group('suffix')) 

print re.sub(r'(?P<prefix><stuff[^>]*translate\()(?P<x>\d*),(?P<y>\d*)(?P<suffix>\)/>)', 
      replacer, 
      '<stuff translate(100,200)/>') 

http://ideone.com/tQS4wK

+0

그러나 이것은 새로운 값을 문자열로 대체하지 않습니다. 입력 문자열을 새로운 x 값과 y 값으로 대체하려고하지만 그 밖의 모든 것은 동일합니다. – Sandeep

+0

확인. 그것은 당신의 질문에 분명하지 않았습니다. – tony19

+0

질문을 명확히하기 위해 업데이트했습니다. – Sandeep