Sinbum's blog
  • 인셉션 개발자
    • History
    • Editorial Board
    • 세미나
      • MS_빅데이터_분석_교육
      • Databricks_Musinsa_사례분석
      • Databricks_AMOREPACIFIC_사례분석
    • 개발자 꿀팁
  • 리눅스
    • 리눅스 기초
      • 기본명령어
      • 프록시서버
      • 온프레미스
      • systemd
      • 우분투 앱
      • vi 사용법
    • 도커
      • MSA 아키텍처
      • 도커 설명
      • 도커 설치
      • 도커 가이드
        • 컨테이너 만들기
        • 컨테이너 보관
        • 컨테이너 사용
        • 컨테이너 관리
        • 컨테이너 볼륨
        • 컨테이너 통신
        • 도커 연습
  • 언어
    • 자바
      • 자바(JAVA)는 무엇인가?
        • JVM 메모리
      • 자바 설치 가이드
      • 자바 언어 활용
        • 변수
        • static
        • 상수
        • 연산자
        • 제어문
        • 배열
        • CLI-자바사용
        • 클래스
        • 메소드
        • 값에의한 호출
        • GUI 프레임
        • 생성자
        • 오버로딩
        • 상속
        • 상속생성자
        • 접근제한자 와 가비지 컬렉션
        • 추상클래스 와 인터페이스
        • 다중구현
        • 예외처리
        • 컬렉션 프레임워크
        • 쓰레드
        • 네트워크
        • 다중 접속 서버 구현
      • 간단한 채팅 앱 개발하기
    • 파이썬
      • 파이썬(Python)은 무엇인가?
      • 파이썬 설치 가이드
      • 파이썬 언어 활용
        • 변수
        • 입력,출력
        • 타입선언
        • 자료구조
        • 주석처리
        • 문자열
        • 리스트
        • 반복문
        • 연산자
        • 조건문
        • 정규표현식
          • re 모듈
          • 메타문자1
          • 메타문자2
          • 그루핑
          • 전방탐색
          • 문자열 바꾸기
          • Greedy 와 Non-Greedy
      • 마치며...
  • 형상관리,CI/CD
    • 깃허브
      • 깃허브 협업 모델
      • 깃허브 설치 와 ssl
      • 깃허브를 잘쓰는 팁 모음
  • BigData
    • BigData 개념
      • OLTP,OLAP
      • ELT,ETL
      • DW
      • ObjectStorage
      • LambdaArc
      • OGG
    • Kafka
      • 환경설정 및 소스코드 다운로드
      • 아파치 카프카는?
        • 카프카의 시작
        • 카프카 특성
        • 빅데이터 아키텍처
      • 카프카 기초 개념
    • BuildApplications
      • Airflow
      • Grafana
    • PowerBi
      • DAX
        • REMOVEFILTERS
        • DAX_문법
        • DAX_함수
    • Azure
      • SynapseAnalytics
  • IOT
    • 아두이노
      • 설치 및 기초
      • 센서의 종류
      • led 출력하기
      • 시리얼 통신
      • 무선 통신
  • About
    • SINBUM
    • INTEREST
    • PROJECTS
      • 업무 프로젝트
      • 개인 프로젝트
        • 티스토리API를 사용한 블로그 앱
        • 노션 API와 블로그 연동 자동화 하기
        • 로지텍 마우스 수리
    • CONTACT
Powered by GitBook
On this page
  • sub()
  • sub 함수 참조 구문 사용
  • sub 메서드의 매개변수로 함수 사용
  • subn() - 부가 함수
  1. 언어
  2. 파이썬
  3. 파이썬 언어 활용
  4. 정규표현식

문자열 바꾸기

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

다음 예제 입니다.

sub()

import re
p = re.compile('(blue|white|red)')
p.sub('colour', 'blue socks and red shoes') # 'colour socks and colour shoes'

sub 함수의 첫번째 매개변수는 바꿀 바꿀 문자열이고 두번째 매개 변수는 대상이 되는 문자열입니다. 앞서 가져온 패턴에서 두번째 인자 로 대상이 되는 문자열을 수정하여 적용할 수 있습니다.

추가 옵션으로 다음과같이 카운트 값을 두어 처음 탐색되는 인자로 한번만 바꿀수 있습니다.

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

sub 함수 참조 구문 사용

sub 메서드를 사용할 때에는 참조 구문을 사용할 수있습니다.

import re

p = re.compile(r"(?P<name>\w+)\s+(?P<phone>(\d+)[-]\d+[-]\d+)")

print(p.sub("\g<phone> \g<name>", "park 010-1234-1234")) # 010-1234-1234 park

위 코드에서의 패턴은 각각의 그루핑으로 name과 phone 패턴을 만들어 주었습니다. 바꾸고 싶은 문자열에 \g<그룹이름> 을 입력한다면 정규식의 그룹과 이름을 참조 할 수 있게됩니다.

sub 메서드의 매개변수로 함수 사용

매개변수로써 return 값을 가지는 함수를 사용 할 수도 있습니다. 다음 예를 살펴 보도록 하겠습니다.

import re

def hexrepl(match):
    value = int(match.group())
    return hex(value)

p = re.compile(r'\d+')
result = p.sub(hexrepl, 'Call 65490 for printing, 49152 for user code.')

print(result) # 'Call 0xffd2 for printing, 0xc000 for user code.'

hexrepl 함수는 매개변수를 match 객체를 입력으로 받아서 16진수로 변환해 돌려주는 함수입니다. sub의 첫번째 매개변수로 함수를 사용 할 경우에 해당 함수의 첫번째 매개변수에는 정규식과 매치된 match객체가 입력이 됩니다. 그리고 매치되는 문자열은 함수의 반환 값으로 출력됩니다.

subn() - 부가 함수

sub() 함수와 동일하지만 반환 결과를 튜플의 형식으로 돌려준다는 것에 차이점이 있습니다. 첫번째 요소는 결과값이고 두번째 요소는 바뀐 횟 수를 말합니다.

import re

p = re.compile('(blue|white|red)')
p.subn( 'colour', 'blue socks and red shoes') # ('colour socks and colour shoes', 2)
Previous전방탐색NextGreedy 와 Non-Greedy

Last updated 2 years ago