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
  • 문자 클래스 []
  • Dot(.)
  • 반복 '*'
  • 반복 '+'
  • 반복 '{m,n}, ?'
  1. 언어
  2. 파이썬
  3. 파이썬 언어 활용
  4. 정규표현식

메타문자1


정규 표현식에서 사용하는 메타 문자는 다음과 같습니다.

. ^ $ * + ? { } [ ] \ | ( )

문자 클래스 []

문자클래스 설명

  • ' [ ] ' 사이의 문자들과 매치 라는 의미를 갖음.

  • '[abc]' 라면 이 표현식의 의미는 a,b,c 중 한개의 문자와 매치를 뜻함

    • "apple" 이라는 단어는 a를 포함하고있으므로 Matched

    • "fox" 라는 단어는 a,b,c 중 포함하고 있지 않으므로 Unmatched

  • '[ ]' 사이에 하이픈을 사용하면 'from - to' 를 의미.

    • '[a-c]' 라는 정규식은 '[abc]' 와 동일함.

    • '[0-5]' 라는 정규식은 '[012345]' 와 동일함.

    • '[a-zA-Z]' : 알파벳 모두를 뜻함.

    • '[0-9]' 숫자를 뜻한다.

  • '^' 의 사용은 반대를 의미한다.

    • '[^0-9]' 는 숫자가 아닌 문자만 해당.

자주사용하는 문자 클래스 '[0-9]','[a-zA-Z]' 등은 많이 사용되는 정규식이므로 별도의 표기법을 사용할 수 있음.

  • ' \d ' : 숫자와 매치,'[0-9]'와 동일한 표현식.

  • ' \D' : 숫자가 아닌 것과 매치, '[^0-9]'와 동일한 표현식.

  • ' \s' : whitespace 문자와 매치, '[\t\n\r\f\v]'와 동일한 표현식입니다. 맨앞의 빈 칸은 공백문자(space)를 의미.

  • ' \S' : whitespace 문자가 아닌 것 과 매치, [^\t\n\r\f\v]와 동일한 표현식.

  • ' \w ' : 문자 + 숫자 와 매치, '[a-zA-Z0-9_]' 와 동일한 표현식.

  • ' \W ' : 문자 + 수자 가 아닌 매치, '[^a-zA-Z0-9_]'와 동일 한 표현식.

대문자로 사용은 소문자의 반대임을 알 수 있습니다,

Dot(.)

정규 표현식의 Dot(.) 메타 문자는 줄바꿈 문자인 '\n'을 제외한 모드 문자와 매치됨을 의미합니다.

re 라이브러리 사용시 re.DOTALL 옵션을 주면 \n 문자와도 매치됩니다.

  1. 'a.b'

위 정규식은 다음과 같습니다.

' a + 모든문자 + b ' 즉 a와 b라는 문자 사이에 어떤 문자가 들어가도 모두 매치 된다는 의미 입니다.

  • 문자열 "aab","a0b","abc"가 정규식 a.b 와 매치되는지 확인.

    • "aab" 는 가운데 문자 "a"가 모든 문자를 의미하는 . 과 일치하므로 정규식과 매치.

    • "a0b" 는 가운데 문자 "0"이 모든 문자를 의미하는 . 과 일치하므로 정규식과 매치됩니다.

    • "abc" 는 "a"문자와 "b"문자 사이에 어떤 문자라도 하나는 있어야 하는 정규식과 일치 하지 않으므로 매치 되지 않습니다.

  1. 'a[.]b''

이 정규식의 의미는 다음과 같습니다. "a + Dot(.)문자 + b"

  1. 정규식 'a[.]b'는 "a.b" 문자열과 매치되고, "a0b" 문자열과는 매치 되지 않습니다. 헷갈릴 수 있는 경우가 있습니다. '[]' 내에 Dot(.) 메타 문자가 사용된다면 문자 '.' 그대로의 의미로 인식해야합니다. 모든문자라는 의미가 아닙니다.

반복 '*'

ca*t

이 정규식에는 반복을 의미하는 *메타 문자가 사용되었습니다. 여기에서 사용한 *은 * 바로앞에 있는 문자 a가 0부터 무한대로 반복 될 수 있다는 의미 입니다.

정규식
문자열
Match 여부
설명

ca*t

ct

Yes

"a"가 0번 반복되어 매치

ca*t

cat

Yes

"a"가 0번 이상 반복되어 매치 (1번 반복)

ca*t

caaat

Yes

"a"가 0번 이상 반복되어 매치 (3번 반복)

반복 '+'

반복을 나타내는 또 다른 메타 문자로 + 가 있습니다. + 는 최소 1번 이상 반복될 때 사용합니다. '*'이 반복 횟수가 0이라면 +는 반복 횟수 1부터 입니다.

다음 정규식을 예제로 사용하겠습니다.

ca+t : "c + a(1번 이상 반복) + t"

매치여부를 표로 표현하면 다음과 같습니다.

정규식
문자열
Match
여부 설명

ca+t

ct

No

"a"가 0번 반복되어 매치되지 않음

ca+t

cat

Yes

"a"가 1번 이상 반복되어 매치 (1번 반복)

ca+t

caaat

Yes

"a"가 1번 이상 반복되어 매치 (3번 반복)

반복 '{m,n}, ?'

  • '{ }' 메타 문자를 사용한다면 반복 횟수를 고정 할 수도 있습니다.

  • '{m,n}' 정규식을 사용하면 반복 횟수가 m부터 n까지 매치 할 수 습니다.

  • m 이나 n을 생략 할수도 있습니다.

{1,}는 +와 동일하고, {0,}는 *과 동일 합니다.

  1. '{m}' {}을 사용한 몇가지 정규식을 살펴보도록 하겠습니다.

정규식
문자열
Match 여부
설명

ca{2}t

cat

No

"a"가 1번만 반복되어 매치되지 않음

ca{2}t

caat

Yes

"a"가 2번 반복되어 매치

  1. '{m,n}'

ca{2,5}t : "c + a(2~5회 반복) + t"

위 정규식에 대한 매치여부는 다음 표와 같습니다.

정규식
문자열
Match 여부
설명

ca{2,5}t

cat

No

"a"가 1번만 반복되어 매치되지 않음

ca{2,5}t

caat

Yes

"a"가 2번 반복되어 매치

ca{2,5}t

caaaaat

Yes

"a"가 5번 반복되어 매치

  1. '?' 반복은 아니지만 비슷한 개념이 있습니다. ? 는 '{0,1}'를 의미합니다.

'ab?c' : "a + b(있어도 되고 없어도 된다) + c"

정규식
문자열
Match 여부
설명

ab?c

abc

Yes

"b"가 1번 사용되어 매치

ab?c

ac

Yes

"b"가 0번 사용되어 매치

  1. 반복 정리

  • 이해하기 쉽고 표현도 간결한 '*', '+', '?' 메타 문자를 사용하는 것이 좋습니다.

  • '*', '+', '?' 메타 문자는 모두 {'m', 'n'} 형태로 고쳐 쓰는 것이 가능합니다.

Previousre 모듈Next메타문자2

Last updated 2 years ago