1 분 소요

정규표현식

  • regular expression
  • 특정한 패턴과 일치하는 문자열을 ‘검색’, ‘치환’, ‘제거’ 하는 기능을 지원
  • 정규표현식의 도움 없이 패턴을 찾는 작업(Rule 기반)은 불완전하거나 작업의 cost가 높음
  • e.g) 이메일 형식 판별, 전화번호 형식 판별, 숫자로만 이루어진 문자열 등

raw string

  • 문자열 앞에 r이 붙으면 해당 문자열이 구성된 그대로 문자열로 변환
a = 'abcdef\n' # escape 문자열
print(a)

b = r'abcdef\n'
print(b)
abcdef

abcdef\n

기본 패턴

  • a, X, 9 등등 문자 하나하나의 character들은 정확히 해당 문자와 일치
    • e.g) 패턴 test는 test 문자열과 일치
    • 대소문자의 경우 기본적으로 구별하나, 구별하지 않도록 설정 가능
  • 몇몇 문자들에 대해서는 예외가 존재하는데, 이들은 특별한 의미로 사용됨
    • . ^ $ * + ? {} [] \ ()
  • . (마침표) - 어떤 한 개의 character와 일치 ( newline(엔터) 제외)
  • \w - 문자 character와 일치 [a-zA-Z0-9_]
  • \s - 공백 문자와 일치
  • \t, \n, \r - tab, newline, return
  • \d - 숫자 character와 일치 [0-9]
  • ^ = 시작, $ = 끝 각각 문자열의 시작과 끝을 의미
  • \가 붙으면 spacial 한 의미가 없어짐. 예를 들어 \.는 .자체를 의미 \\는 \를 의미
  • 자세한 내용은 링크 참조

search method

  • 첫 번째로 패턴을 찾으면 match 객체를 반환
  • 패턴을 찾지 못하면 None 반환
import re
re.search(r'abc', 'abcdef')
print(m.start())
print(m.end())
print(m.group())
0
3
abc
re.search(r'abc', '123abcdef')
print(m.start())
print(m.end())
print(m.group())
3
6
abc
m = re.search(r'abc', '123abdef')
print(m)
None
m = re.search(r'\d\d', '112abcdef119')
m
<_sre.SRE_Match object; span=(0, 2), match='11'>
m = re.search(r'\d\d\d\w', '112abcdef119')
m
<_sre.SRE_Match object; span=(0, 4), match='112a'>
m = re.search(r'..\w\w', '@#$%ABCDabcd')
m
<_sre.SRE_Match object; span=(2, 5), match='$%AB'>

metacharacter (메타 캐릭터)

[] 문자들의 범위를 나타내기 위해 사용

  • [] 내부의 메타 캐릭터는 캐릭터 자체를 나타냄
  • e.g)
    • [abck] : a or b or c or k
    • [abc.^] : a or b or c or . or ^
    • [a-d] : -와 함께 사용되면 해당 문자 사이의 범위에 속하는 문자 중 하나
    • [0-9] : 모든 숫자
    • [a-z] : 모든 소문자
    • [A-Z] : 모든 대문자
    • [a-zA-Z0-9] : 모든 알파벳 문자 및 숫자
    • [^0-9] : ^가 맨 앞에 사용되는 경우 해당 문자 패턴이 아닌 것과 매칭
re.search(r'[cbm]at', 'cat')
<_sre.SRE_Match object; span=(0, 3), match='cat'>

태그:

카테고리:

업데이트:

댓글남기기