정규 표현식(regular expression, regex): 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.
이때 . ^ $ * + ? { } \ | ( ) 와 같이 그 문자가 가진 뜻이 아닌 특별한 용도로 사요하는 문자를 메타 문자(meta characters) 라고 한다.
gray|grey는 "gray" 또는 "grey"와 일치한다.gray|grey와 gr(a|e)y는 "gray"나 "grey" 집합을 둘 다 기술하는 동일 패턴이다.? : 물음표는 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_]와 동일한 표현식이다.>>> 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'>
정규표현식 테스트하기 좋은 사이트