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
  • 소괄호 그루핑
  • 다중 그루핑
  • 그루핑 변수선언 (네이밍)
  1. 언어
  2. 파이썬
  3. 파이썬 언어 활용
  4. 정규표현식

그루핑


ABC 문자열이 계속해서 반복되는지 조사하는 정규식을 작성해야하는경우 필요한 것이 바로 그루핑(Grouping) 입니다.

정규식 표현은 다음과 같습니다.

'(ABC)+'

소괄호 그루핑

그룹을 만들어 주는 메타 문자는 바로 소괄호 () 입니다.

import re

p = re.compile('(ABC)+')
m = p.search('ABCABCABC OK?')

print(m) # <re.Match object; span=(0, 9), match='ABCABCABC'>
print(m.group()) # ABCABCABC

다음 예제를 예로 들겠습니다.

p = re.compile(r"\w+\s+\d+[-]\d+[-]\d+")
m = p.search("park 010-1234-1234")

위 예제는 이름 + " " + 전화번호 형태의 정규식 패턴입니다. 이중에서 이름만 추출해 내고 싶다면 바로 그루핑을 적용하는것입니다.

다중 그루핑

  1. 한개 그루핑

p = re.compile(r"(\w+)\s+\d+[-]\d+[-]\d+")

m = p.search("choi 010-1234-1234")
print(m.group(1)) # park
  1. 두개 그루핑

p = re.compile(r"(\w+)\s+(\d+[-]\d+[-]\d+)")

m = p.search("park 010-1234-1234")
print(m.group(2)) # 010-1234-1234
  1. 두개이상의 그루핑

p = re.compile(r"(\w+)\s+((\d+)[-]\d+[-]\d+)")

m = p.search("park 010-1234-1234")
print(m.group(3)) # 010

이름 부분에 해당하는 부분을 **(\w+)**로 그루핑 한다면 그부분의 문자열만 추출 할 수 있습니다.

group(인덱스)
설명

group(0)

매치된 전체 문자열

group(1)

첫 번째 그룹에 해당되는 문자열

group(2)

두 번째 그룹에 해당되는 문자열

group(n)

n 번째 그룹에 해당되는 문자열

그루핑 변수선언 (네이밍)

정규식 안에 그룹이 상당히 많아 질 경우는 그룹이 10개만 되어도 가독성이 현저히 떨어 질 것입니다. 따라서 그룹을 직접 네이밍하여 코드의 가독성을 높이는 것이 좋습니다.

정규 표현식에서의 그루핑의 변수 선언은 다음과 같이 할 수 있습니다.(위의 핸드폰 추출 정규식의 예제 적용)

(?P\w+)\s+((\d+)[-]\d+[-]\d+)

p = re.compile(r"(?P<name>\w+)\s+((\d+)[-]\d+[-]\d+)")
m = p.search("choi 010-1234-1234")
print(m.group("name")) # choi

위 예 에서 볼 수 있듯이 name 이라는 그룹이름으로 참조 할 수 있습니다. 그룹 이름을 사용하면 정규식 안에서 재참조 하는 것도 가능합니다.

Previous메타문자2Next전방탐색

Last updated 2 years ago