본문 바로가기
-------------코딩-------------/Python 기초 코딩

정규 표현식 - 메타 문자

by 탶선 2021. 2. 23.
반응형

정규표현식 - 특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어(문자열)를 처리할 때 사용하는 기법

 

문자 클래스 [ ]

  • [ ] - [ ] 사이의 문자들과 매치
  • ex)
    • [a-zA-Z] - 알파벳 모두
    • [0-9] - 숫자

Dot(.)

  • a.b - a와 b 사이의 모든 문자 매치 // \n을 제외한 모든 문자 한 개와 매치 // 여러개 사용 가능
  • ex)
    • a.b - "aab", "a1b", "a#b" 모두 매치
    • a..b - "axxb", a"22b", a##b" 모두 매치
import re

s = "a1234bllla#b"

p = re.compile('a.b')
m = p.findall(s)

print(m)
# ['a#b']


s = "a1234bllla#!@b"

p = re.compile('a...b') # .이 3개
m = p.findall(s)

print(m)
# ['a#!@b']

 

a[.]b - 위의 모든 문자의 의미 아님 주의// . 그대로 의미

import re

s = "a.b"

p = re.compile('a[.]b') # .이 3개
m = p.findall(s)

print(m)

 

 

* (반복)

  • 0회 이상 반복(없어도 상관 없음)
import re

s = "aaaaab"

p = re.compile('a*b') 
print(p.findall(s)) # ['aaaaab']

 

+ (반복)

  • 1회 이상 반복
import re

s = "ab"

p = re.compile('a+b') 
print(p.findall(s)) # ['ab']


s = "abababcd"

p = re.compile('ab+') 
print(p.findall(s)) # ['ab']

 

{} (반복)

  • ex)
    • {a,b} - a회 이상 b회 이하 반복횟수 지정
import re

text = 'hi my naame is nahi naaaa'
p = re.compile('na{1,2}')

print(re.findall(p, text))
# ['naa', 'na', 'naa']

 

  • or 조건식
import re

text = 'hi my naame is nahi naaaa'
p = re.compile('my|hi')

print(re.findall(p, text))
# ['hi', 'my', 'hi']

 

  • 문자열의 시작
import re

text = 'hello hi i am a boy'

p = re.compile('^hello')

print(re.findall(p, text))
# ['hello']

 

  • $  문자열의 끝
import re

text = 'hello hi boy i am a boy'

p = re.compile('boy$')

print(re.findall(p, text))
# ['boy']

 

  • ? 있어도 되고 없어도 됨
    • ex) 
      • ab?c  -- abc  --> match("b"가 1번 사용됨)
      • ab?c  -- ac    --> match("b"가 0번 사용됨)
import re

text = 'dont forget fo foo'

p = re.compile('fo?')

print(re.findall(p, text))
# ['fo', 'fo', 'fo']

 

  • \ - 메타 문자를 일반 문자로 인식
  • () - 그룹핑, 추출할 패턴 지정, 검색 결과의 특정 부분만 출력

 

반응형

댓글