정규표현식이란 긴 텍스트 셋에서 찾을 수 있는 문자열 / 패턴 표현하기 위해 구성하는 기호 or 문자의 부분집합이다.
텍스트 편집기에서 ‘찾아 바꾸기’ 를 사용하는 것과 같은 역할이다.
날짜-시간 혹은 이메일같은 특정한 형식으로 제한하거나 강제하는 것이 가능하다
파이썬에선 re 모듈 ( 파이썬 설치시 함께 포함 )로 사용이 가능하지만 regex라이브러리를 설치하면 고급 내장함수 사용이 가능하다.
정규표현식의 기본
메타문자 - 특별한 의미를 가진 문자
- [ ] : 문자집합
- “[a-m]”- range를 의미하며 a-m사이 문자 의미
- “[xy]” - 문자선택을 표현. x와 y 중 하나 의미
- “[^xy]” - not. x및 y 제외한 문자 의미
- “[0123]” - 지정된 숫자가 존재하는 것 반환 ( 0, 1, 2, 혹은 3)
- “[0-9]” - 0에서 9 사이 숫자 중 일치하는 것 반환
- “[0-5][0-9]” 00에서 59까지 두개 숫자중 일치하는 것을 반환
- “[a-zA-Z]” : a에서 z까지 알파벳 순서로 소분자 또는 대문자 중 일치하는 것 반환
- 집합에서 +, *, ., |, (), $, {}는 특별한 의미를 갖지 않는다. 따라서 [+]는 문자열에 있는 + 문자에 대해 일치하는 것을 찾는다!
- . : 임의의 한 문자( 새로운 줄 문자 제외 ) “he..o” - he로 시작하고 o로 끝나는 5자리 문자열
- ^ : 문자열의 시작 “^x” - x문자로 시작된다
- $ : 문자열의 종료 “x$” - x문자로 종료됨
-
- : 0개 이상 발생. 반복여부를 표현. “x*” - x문자가 0번 이상 반복된다를 의미. 있다.
-
- : 1개 이상 발생. 반복 여부를 표현. “x+” - x문자가 한번 이상 반복됨
- ? : 존재 여부를 표현. x문자가 존재할 수도, 존재하지 않을 수도 있음을 의미.
- | : or를 표현 “x|y”-x 혹은 y문자가 존재함을 의미
- {} : 지정될 수 만큼 발생.
- “x{n}” - x문자가 n번 반복된다.
- “x{n,}” - x문자가 n번 이상 반복된다.
- “x{n, m}” - 반복을 표현하며 x문자가 최소 n번 이상 최대 m번 이하 반복
- () : 그룹. “(x)” - x를 그룹으로 처리함
- (x)(y) - 그룹들의 집합. 앞에서부터 순서대로 번호 부여해 관리하고 x, y는 각 그룹의 데이터로 관리된다
- (x)(?:y) - 그룹들의 집합에 대한 예외 표현. 그룹집합으로 관리되지 않음을 의미.
\ + 문자 하나로 특별한 의미를 갖는 문자열들
- \^ : escape. ^를 문자로 사용함
- \b : word boundary. 문자와 공백 사이의 문자 의미.
- \B : non word boundary. 문자