[자바/Java] 정규표현식
정규표현식(regex)는 일정한 패턴을 표현하는 일종의 형식 언어이다.
주민번호, 차량번호, 전화번호 같이 어떤 일정한 모양새가 있는 곳에 사용하면 개발시에 편리하게 쓸 수 있고 자바 외에도 파이썬, 자바스크립트, c, c++ 등에도 사용이 가능하다.
일단 몇 가지 기호들을 정리해보겠다.
기호 | 설명 |
[] | 문자의 집합 범위. 두 문자 사이는 -기호로 나타내고, ^가 선행되면 not을 의미한다 |
[abc] | a, b, c 중 하나의 문자 |
[^abc] | a, b, c 이외 하나의 문자 |
[a-zA-Z] | a-z, A-Z 중 하나의 문자 |
\ | 백슬러시 뒤에 일반 문자가 오면 특수문자로 취급하고 특수 문자가 오면 그 문자 자체를 뜻함 |
\d or [0-9] | 한개의 숫자 |
\s | 공백 |
\w | 한 개의 알파벳 또는 한개의 숫자 = [a-zA-Z_0-9] |
? | 앞 문자가 없거나 하나있음 |
* | 앞 문자가 없음 또는 한개 이상 |
+ | 앞 문자가 한개이상 |
^ | 문자열의 시작 |
$ | 문자열의 종료 |
. | 임의의 한 문자 |
| | or연산 |
{} | 횟수 또는 범위를 나타냄 |
{n} | n개 |
{n,} | 최소 n개 |
{n, m} | n개에서 부터 m개까지 |
() | 괄호 안의 문자를 하나의 문자로 인식 |
이렇게 정의해도 막상 실제로 쓰인 정규식을 보거나 정규식을 직접 작성해보면 헷갈려서 자주 사용되는 것들은 따로 암기가 필요할 것 같다.
정규식 | 설명 |
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자 |
^[가-힣]*$ | 한글 |
\\w+@\\w.\\w+(\\.\\w+)? | 이메일 |
^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 |
\d{6} \- [1-4]\d{6} | 주민등록번호 |
자바의 경우에는 replaceAll에서 정규표현식을 이용해서 문자열을 바꿀 수도 있고,
Pattern클래스의 matches()를 이용하면 문자열이 정규식에 해당되는지도 태스트 해볼 수 있다.
'언어 > JAVA' 카테고리의 다른 글
[자바/Java] 자바로 멀티 스레드 소켓 채팅 구현해보기 (0) | 2024.06.27 |
---|---|
[자바/Java] Collection과 comparator (1) | 2024.02.04 |
[자바/Java] 입력 비교 Scanner, BufferedReader (0) | 2024.01.19 |
[자바/Java] 배열에서 중복 제거하기 / list에서 중복 제거하기 (0) | 2022.02.11 |