정규 표현식(Regular Expression 또는 Regex)은 문자열을 검색, 매칭, 추출하거나 특정 패턴의 문자열을 생성하는 데 사용되는 강력한 도구이다.
주요 표현 방법
리터럴 문자 : 일반 문자는 해당 문자와 정확히 일치
ex) "abc"는 문자열 "abc"와 정확하게 일치하는 패턴.
메타 문자 : 특수한 의미를 가지는 문자로 역슬래시()로 시작
. : 어떤 문자 하나와 일치.
=> "."를 표현하고 싶다면 "\."으로 표현
* : 바로 앞 문자나 그룹이 0회 이상 반복.
+ : 바로 앞 문자나 그룹이 1회 이상 반복.
? : 바로 앞 문자나 그룹이 0회 또는 1회 반복.
[] : 문자 클래스로, 대괄호 안의 문자 중 하나와 일치.
[^] : 해당 문자를 제외한 다른 문자와 일치.
{} : 반복 수량자로, 패턴 또는 그룹의 반복 횟수를 지정.
문자 클래스 : 대괄호([ ]) 안의 문자 집합
[abc] : "a", "b", "c" 중 하나의 문자와 일치.
[0-9] : 0부터 9까지의 숫자 중 하나와 일치.
반복 수량자 : 패턴, 그룹 또는 문자 클래스를 반복
* : 0회 이상 반복.
+ : 1회 이상 반복.
? : 0회 또는 1회 반복.
{n} : 정확히 n회 반복.
{n,} : n회 이상 반복.
{n,m} : n회부터 m회까지 반복.
그룹화 : 괄호 '()'를 사용하여 일련의 문자열을 그룹화
'('와 ')' : 그룹을 나타내며, 그룹 전체를 하나의 요소로 취급.
앵커 : 특정 위치를 나타내며, 문자열의 시작과 끝을 나타내는 앵커가 있다.
^ : 문자열의 시작 위치.
$ : 문자열의 끝 위치.
특수 시퀀스 : 특수한 의미를 가지는 문자열 패턴
\b : 단어 경계(Word Boundary)
\d : 숫자와 일치.
\D : 숫자가 아닌 문자와 일치.
\w : 알파벳 문자와 숫자, 밑줄('_')과 일치.
\W : 알파벳 문자, 숫자, 밑줄('_')이 아닌 문자와 일치.
\s : 공백 문자와 일치.
\S : 공백 문자가 아닌 문자와 일치.
ex) \bword\b는
"word" 라는 단어 자체
"word"로 끝나는 문장 또는 문자열의 "word" 부분
"word"로 시작하는 문장 또는 문자열의 "word" 부분.
하지만, "sword"나 "wordpress"와 같이 "word" 문자열 내에 다른 문자가 붙어 있는 경우에는 \bword\b와 일치하지 않는다.
사용 예)
패턴 : [a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}
설명 : 이메일 주소의 일반적인 형식을 검색하는 패턴.
패턴 : https?://\S+
설명 : 문자열에서 HTTP 또는 HTTPS URL을 추출하는 패턴.
패턴 : \d{3}-\d{3}-\d{4}
설명 : XXX-XXX-XXXX 형식의 전화번호를 추출하는 패턴.
패턴 : \d{4}-\d{2}-\d{2}
설명 : YYYY-MM-DD 형식의 날짜를 검색하는 패턴.
패턴 : \b\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}\b
설명 : IPv4 주소를 검색하는 패턴.
ex)
//javascript 예
var ary = str.split(/\D+/g)
//java 예
String input = "123abc456def789";
String regex = "\\D+"; // 숫자가 아닌 문자들을 찾는 정규 표현식
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
System.out.println(matcher.group());
}
출처 openAI