Programming/Python

[REGEX] Substitude

scii 2016. 10. 9. 22:24

sub 메서드를 이용하면 정규식과 매치되는 부분을 다른 문자로 쉽게 바꿀 수 있다.


sub 메서드의 첫 번째 입력 인수는 "바꿀 문자열"이 되고, 두 번째 입력 인수는 "대상 문자열"이 된다. 

바꾸기 횟수를 제어하려면 다음과 같은 세 번째 입력 인수로 count값을 넘기면 된다.

comp.sub('colour', 'blue socks and red shoes', count=1)


subn 역시 sub와 동일한 기능을 하지만 리턴되는 결과를 튜플로 리턴한다는 차이가 있다. 리턴된 튜플의 첫 번째 요소는 변경된 문자열이고, 두 번째 요소는 바꾸기가 발생한 횟수이다.




sub 메서드 사용 시 참조 구문 사용하기

위 예는 "이름 + 전화번호"의 문자열을 "전화번호 + 이름" 으로 바꾸는 예이다. sub의 바꿀 문자열 부분에 "\g<그룹명> 을 이용하면 정규식의 그룹명을 참조 할 수 있다.

그룹명 대신 참조 번호를 이용해도 마찬가지의 결과가 리턴된다.




sub 메서드의 입력 인수로 함수 넣기

sub 메서드의 첫 번째 입력 인수로 함수를 넣을 수도 있다. 

Dec2Hex 함수는 match 객체(위에서 숫자에 마치되는)를 입력으로 받아 16진수로 변환하여 리턴하는 함수이다. sub의 첫 번째 입력 인수로 함수를 사용할 경우, 해당 함수의 첫 번째 입력 인수에는 정규식과 매치된 match 객체가 입력된다. 그리고 매치되는 문자열은 함수의 리턴 값으로 바뀌게 된다.




Example

전화번호의 마지막 숫자 4개를 #으로 변경하는 예제