4.2.4 정규표현식
정규표현식은 문자열 패턴을 나타내는 표현 방식입니다. 정규표현식을 이용하면 복잡한 문자열도 쉽게 검색할 수 있습니다. 하지만 유용한 만큼 내용이 많고 제대로 다루기 쉽지 않습니다. 많은 경우 정규표현식을 대체할 수 있는 자바의 내장 라이브러리가 있고, 이를 이용하는 것이 편리합니다.
여기에서는 정규표현식이 어떻게 자바의 내장 라이브러리를 이용해서 구현하는 것보다 쉽게 문제를 처리하는지 알아봅니다. 정규표현식에 대해 너무 자세히 다루지는 않을 예정이니 정규표현식의 무궁무진한 가능성과 응용법을 알고 싶다면 높은 평점을 기록하고 있는 프로그래머스의 정규표현식 무료 강의(https://school.programmers.co.kr/learn/courses/11)를 참고하세요.
다음은 자주 사용되는 정규표현식입니다. 이 정도의 정규표현식만으로도 자바 내장 라이브러리로 여러 줄에 걸쳐 구현해야 하는 코드를 간단히 처리할 수 있습니다.
▼ 표 4-9 자주 사용되는 정규표현식
정규표현식 |
내용 |
예시 |
. |
개행 문자를 제외한 아무 문자 |
.nd -> and, end, cnd, nnd, … |
[abc] |
a, b, c 중 아무것이나 |
[ae]nd -> and, end |
[^abc] |
a, b, c를 제외하고 |
[^ae]nd -> cnd, nnd, … |
[a-g] |
a, g 사이의 문자들 [0-9] -> 모든 숫자 [a-z] -> 모든 소문자 [A-Z] -> 모든 대문자 |
[1-9][0-9] -> 10, 25, 88, 99, … [A-Z][a-z] -> An, By, Hi, … |
a* |
a 0개 이상 |
1[0-9]* -> 1, 10, 164, 1810, … |
a+ |
a 1개 이상 |
1[0-9]+ -> 10, 164, 1810, … |
a? |
a 0개 또는 1개 |
1[0-9]? -> 1, 11, 15, 19, … |
a{5} |
a 5개 |
[a-c]{3} -> aaa, aab, aac, aba, abb, …, ccb, ccc |
a{2,} |
a 2개 이상 |
[a-c]{3,} -> a, aa, ab, ac, aaa, …, ccc |
a{2, 4} |
a 2개 이상 4개 이하 |
[a-c]{2, 3} -> aa, aab, aac, ab, aba, …, ccc |
ab|cd |
ab 또는 cd |
일|하나|한 -> 일, 하나, 한, … |
^a |
문자열의 처음 문자가 a |
|
a$ |
문자열의 마지막 문자가 a |
|
\ |
사전 정의된 문자를 표현하는 이스케이프 시퀀스 |
\. -> . \+ -> + |