공부하는 스누피
정규표현식 정리 본문
정규표현식(Regular Expression)
정규표현식은 특정한 패턴을 가진 문자열의 집합을 표현하는 방법이다.
문자열의 검색 및 치환에서 많이 쓰인다. 대표적인 정규표현식 라이브러리로 Python의 re 모듈이 있다.
문법
정규표현식의 패턴은 대상 문자열과 일치시키는데 쓰이며, 일련의 문자들로 구성된다.
양의 지정
? : 있어도 되고 없어도 되는 문자를 일치.
ex) colou?r -> u는 있어도 되고 없어도 된다.
* : 0번 이상 나타나는 문자를 일치시킴.
ex) ab*c -> b가 없어도 되고, 여러번 연속해서 나타나도 된다.
+ : 1번 이상 나타나는 경우
ex) ab*c -> b가 없으면 안된다.
메타문자 (특수 문자 기호)
정규표현식 내 특별한 의미를 갖는 문자 기호이다.
ex) |, [], (), 수량자, 앵커(`^$\) 등
구분 문자
표현식을 일반 문자열로 표현할 수 있으나, 구분 문자로 슬래시(/)를 사용할 수 있다.
POSIX 기본 및 확장 표준 문법
정규표현식은 POSIX 확장 문법을 사용한다. 프로그래밍 언어, 라이브러리에 따라 특정 문법 규칙이 달라지기도 한다.
. | 문자 | 1개의 문자와 일치 |
\w | '_', a-z, 0-9 | "_"를 포함한 영어 알파벳, 숫자를 일치시킨다. |
\W | '_', a-z, 0-9 제외 | |
\s | 공백 문자 | |
\S | 공백 제외 | |
\d | 숫자 | |
\D | 숫자 제외 | |
[ ] | 문자 클래스 | '['와 ']'사이의 문자 중 하나를 선택한다. [1-9]일 경우 1에서 9까지 숫자 중 하나와 일치되는 것을 의미한다. |
[^ ] | 부정 | 문자 클래스 안의 문자를 제외한 나머지를 선택한다. |
^ | 처음 | 문자열의 처음 |
$ | 끝 | 문자열의 끝 |
\A | 문자열 시작점과 일치 | 개행문자를 인식하여 패턴을 일치시킨다. |
\z | 문자열의 끝과 일치 | |
( ) | 하위식 | 여러 식을 하나로 묶을 수 있다. |
\n | 일치하는 n번째 패턴 | 일치하는 패턴 중 n번째를 선택한다. |
* | 0회 이상 | |
{m, n} | m회 이상 n회 이하 | m회 이상 n회 이하 반복하는 문자 |
정규 표현식을 테스트해 볼 수 있는 사이트
자주 쓰는 정규 표현식
- 두번 반복되는 알파벳
p = r'(.)\1{1}'
- 단어의 첫 알파벳만 대문자로
pattern = r'( [a-z])'
toUppder = lambda pat: ' ' + pat.group(0)[1].upper()
answer = re.sub(pattern, toUppder, s)
- 전화번호
p = r'0\d{1,2}-?\d{3,4}-?\d{4}'
- 이메일
p = '\w+@\w+(.\w+)+'
참고
www.ktword.co.kr/abbr_view.php?m_temp1=5851
'정리 모음' 카테고리의 다른 글
슈도코드(의사코드, pseudocode) 가이드라인 (0) | 2020.10.19 |
---|---|
[기술면접]자료구조 정리 (0) | 2020.10.19 |
[webOS] Web app 원격 인스톨 (0) | 2020.08.02 |
[webOS] webOS 이미지 빌드 방법 (0) | 2020.07.30 |
[Apache] RewriteRule 정리 (0) | 2020.07.14 |
Comments