정규표현식 (Regular Expression)
- 정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다.
- 정규표현식은 특정한 조건으로 문자를 검색하거나 바꿀 때 사용한다.
표
( ) | 패턴들을 하나의 그룹으로 묶음. ex ) OR 연산자인 | 과 함께 써서, (txt|hwp|doc)과 같이 txt, hwp, doc 세가지에 매치시킬 수 있다. |
+ | 기호 앞의 패턴이 1번 이상 발생하는 패턴 ex ) ^\S+ (공백없는 텍스트로 시작하고, 한글자 이상의 길이로 된다.) |
? | 기호 앞의 패턴이 없거나 1번 발생하는 패턴 (0 ~ 1번 발생) ex ) \d+ (숫자가 없거나 1번 발생하는 패턴) |
* | 기호 앞의 패턴이 없거나 1번 이상 발생하는 패턴 (0 ~ 1번 이상 발생, ?과 *를 구분해야 한다.) |
. | 모든 문자를 카르킴 (\과 개행은 제외) |
^ | 문자열(패턴)이나 행의 처음을 의미 |
$ | 문자열(패턴)이나 행의 종료를 알립니다. |
[ ] | [ ] 사이에 들어간 문자중 하나를 매치 ex ) [abc]는 ab,bc,ac,를 모두 포함 |
[^ ] | [ ]의 부정을 의미. [^0-9] 라면, 0에서 9를 포함하지 않은 문자를 의미 |
[A-Z] | A에서 Z까지의 대문자 중 하나를 찾습니다. [0-9]는 0부터 9까지를 의미. |
\s | 공백문자 |
\S | 공백을 제외한 나머지 문자들 (공백이 없는 텍스트 일때 사용하게 된다.) |
\w | “_“를 포함한, 영어와 숫자들 |
\W | “_“를 제외한, 영어와 숫자가 아닌 문자열들과 일치. |
\d | 숫자를 일치 시킨다. [0-9]와 동일 |
\D | 숫자가 아닌 모든 문자 |
{M,N} | 최소 M번 이상, 최대 N번 이하로 발생하는 패턴 참고로, {}는 정확하게 몇번 발생하는지를 말합니다. ex ) \d{6} - [1-4]\d{6} (주민등록 번호의 경우 6자리 숫자와 대쉬(-), 그리고 1 ~ 4의 숫자 + 6자리 숫자로 구성된다.) |
| | OR 연산을 의미 (txt|doc)는 txt 또는 doc를 의미한다. |
?! | 대소문자를 구분하지 않음 |
추가적으로 자주 사용하게 되는 모든 숫자, 영문자는 아래와 같이 표현할 수 있다.
- [a-zA-Z] : 모든 영문자, a-z는 소문자 의미, A-Z는 대문자 의미
- [0-9] : 0-9까지의 모든 숫자
- [a-zA-Z0-9] : 대문자 및 소문자의 영문자와 숫자
정규표현식 응용 사례
숫자만 나오도록 할 경우
텍스트는 제거하고 숫자만 나오도록 할 경우 replaceAll이라는 메소드와 정규 표현식을 사용 할 수 있다.
string.replaceAll(“[^0-9]”,””);
실행 결과
이메일 형식 체크
regex = “[0-9a-zA-Z][_0-9a-zA-Z-]*@[_0-9a-zA-Z-]+(\.[_0-9a-zA-Z-] + ){1,2}$”;
실행 결과
해당 확장차 파일 찾기
실행 결과