[Python] 정규표현식

짱구석·2020년 11월 8일
0
post-thumbnail

1. 정규표현식

정규 표현식(regular expression, regex): 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.

이때 . ^ $ * + ? { } \ | ( ) 와 같이 그 문자가 가진 뜻이 아닌 특별한 용도로 사요하는 문자를 메타 문자(meta characters) 라고 한다.

2. 문법

  1. gray|grey는 "gray" 또는 "grey"와 일치한다.
  2. gray|grey와 gr(a|e)y는 "gray"나 "grey" 집합을 둘 다 기술하는 동일 패턴이다.
  3. 양의 지정
  • ? : 물음표는 0번 또는 1차례까지의 발생을 의미한다. 이를테면 colou?r는 "color"와 "colour"를 둘 다 일치시킨다.``별표는 0번 이상의 발생을 의미한다. 이를테면 ab*c는 "ac", "abc", "abbc", "abbbc" 등을 일치시킨다.
  • + : 덧셈 기호는 1번 이상의 발생을 의미한다. 이를테면 ab+c는 "abc", "abbc", "abbbc" 등을 일치시키지만 "ac"는 일치시키지 않는다.
  • {n} : 정확히 n 번만큼 일치시킨다.
  • {min,} : "min"번 이상만큼 일치시킨다.
  • {min,max} : 적어도 "min"번만큼 일치시키지만 "max"번을 초과하여 일치시키지는 않는다.
  • [] : [abc]라면 abc중 적어도 한개의 문자가 있으면 일치 시킨다.
  • - : 하이픈(-) 은 범위(from-to)를 의미한다. ex) [a-zA-z] : 알파벳 모두, [0-9] : 숫자 모두
  • . : \n (줄바꿈) 을 제외한 모든 문자와 일치
  • * : 앞에 있는 문자가 0부터 무한대로 반복가능 ex) ca*t : caaat, ct 일치
  • \d - 숫자와 매치, [0-9]와 동일한 표현식이다.
  • \D - 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
  • \s - whitespace 문자와 매치, [ \t\n\r\f\v]와 동일한 표현식이다. 맨 앞의 빈 칸은 공백문자(space)를 의미한다.
  • \S - whitespace 문자가 아닌 것과 매치, [^ \t\n\r\f\v]와 동일한 표현식이다.
  • \w - 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
  • \W - 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.

3. 파이썬에서 사용

Untitled

>>> import re
>>> p = re.compile('[a-z]+') # 해당 정규식으로 컴파일

# match
>>> print(p.match('abc'))
>>> <re.Match object; span=(0, 3), match='abc'>

>>> print(p.match('1'))
>>> None

# findall
>>> print(p.findall('abc efg ijk'))
>>> ['abc', 'efg', 'ijk']

>>> print(p.findall('123'))
>>> []

# finditer
>>> print(p.finditer('abc efg'))
<callable_iterator object at 0x7f4a644bbe20>

>>> for i in e:
			print(i)

>>> <re.Match object; span=(0, 3), match='abc'>
>>> <re.Match object; span=(4, 7), match='efg'>

참고

정규표현식 테스트하기 좋은 사이트

0개의 댓글