프로그래밍 – 정규표현식
테스트 사이트 : https://regexr.com/
정규표현식이란?
특정 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
Character classes
| 종류 | 범위 | 예시 |
| . | 모든 문자 | – |
| \w, \d, \s | (영문 대소문자+숫자+_), 숫자, 공백 |
– |
| \W, \D, \S | (영문 대소문자+숫자+_)가 아닌 문자, 숫자가 아닌 문자, 공백이 아닌 문자 |
– |
| [abc] | [] 안의 문자만 허용 | 조건 : [abc] abcde |
| [^abc] | [] 안의 문자를 제외하고 허용 | 조건 : [^abc] abcde |
| [a-g] | [] 안의 허용될 문자의 범위 | 조건 : [b-d] abcdefgh |
Anchors
| 종류 | 범위 | 예시 |
| ^, $ | (줄 단위) 문자의 시작, 끝에 해당하는 경우 | 조건 : ^abc 1, abcd 2. bcd -> not find 조건 : efg$ 1. abcdefg 2. abcdef -> not find |
| \b | (단어 단위) 문자의 시작에 해당하는 경우 | 조건 : \babc abcdefg abcdasd bcdasd |
| /B | (단어 단위) 문자의 끝에 해당하는 경우 | 조건 : \Befg abcdefg bcdefg bcdef |
Escaped characters
| 종류 | 범위 | 예시 |
| \. \* \\ | . * \ 특수문자 검사를 위해선 앞에 \ (백슬래시)를 추가 | 조건 : \\n hello\n welcome to world\n |
Groups & Lookaround
| 종류 | 범위 | 예시 |
| (abc) | () 안의 문자열 그룹핑 (캡처 o) | – |
| (?:abc) | () 안의 문자열 그룹핑 (캡처 x) | 조건 : ab(?:b) abcdefg abbcdefg abbbbcdefg |
| (?=abc) | () 안의 문자열 그룹핑(캡처 x) 된 문자열 선택 해제 [ 전방 탐색 ] | 조건 : ab(?=b) abcdefg -> not find abbcdefg abbbbcdefg |
| (?!abc) | 위 조건에 해당되지 않는 경우 | 조건 : ab(?!b) abcdefg abbcdefg -> not find abbbbcdefg -> not find |
Quantifiers & Alternation
| 종류 | 범위 | 예시 |
| 문자*, 문자+, 문자? | 해당 문자는 0개이상의 문자, 1개이상의 문자, 0 또는 1개의 문자 |
조건 : ab*c 1. acdefg 2. abcdefg 3. abbcdefg 조건 : ab+c 1. acdefg -> not find 2. abcdefg 3. abbcdefg 조건 : ab?c 1. acdefg 2. abcdefg 3. abbcdefg -> not find |
| 문자{최대} 문자{최소,최대} | 해당 문자는 최소~최대까지 반복됨을 의미 | 조건 : b{3} abbcdefg -> not find abbbbcdefg |
| ab|cd | ab 또는 cd의 문자 선택 | 조건 : ab|cd acdefg abcdefg abbcdefg |
응용
- 이메일 검사
^[\w-]+@[0-9a-zA-Z-]+(\.|$)[0-9a-zA-Z-.]+$
- 생년월일 검사
^\d{4}\/(0[1-9]|1[0-2])\/(0[1-9]|1[0-9]|2[0-9]|3[0-1])
- 전화번호 검사
\d{2,3}-\d{3,4}-\d{4}
댓글 한 개
핑백 :