반응형
Java에서 정규표현식(Regex)은 텍스트 패턴을 정의하여 문자열을 검사하거나 매칭하는 데 사용됩니다. 정규표현식은 문자, 숫자, 특수문자 등 다양한 텍스트 패턴을 다룰 수 있어서 유효성 검사, 특정 텍스트 검색, 문자열 대체 작업에 자주 사용됩니다.
1. 정규표현식의 기본 구조
Java에서는 java.util.regex 패키지를 통해 정규표현식을 사용할 수 있습니다. 주요 클래스는 다음과 같습니다
- Pattern : 정규표현식 패턴을 정의하고 컴파일하는 클래스입니다.
- Matcher : Pattern 객체를 통해 생성되며, 특정 문자열에서 패턴을 찾고 매칭하는 역할을 합니다.
2. 기본 문법
- .: 임의의 한 문자 (개행 제외)
- *: 앞 문자가 0번 이상 반복
- +: 앞 문자가 1번 이상 반복
- ?: 앞 문자가 0번 또는 1번만 등장
- []: 문자 클래스, 대괄호 안의 문자 중 하나와 일치 (예: [a-z]는 소문자 하나)
- ^: 문자열 시작 부분과 매칭, 또는 문자 클래스에서의 부정 (예: [^a-z]는 소문자를 제외한 문자)
- $: 문자열 끝과 매칭
- |: 논리적 OR (예: (a|b)는 'a' 또는 'b'와 일치)
- \d: 숫자와 매칭 (0-9)
- \w: 영문자나 숫자 또는 _와 일치
- \s: 공백 문자 (space, tab 등)와 일치
- {n,m}: n부터 m번까지 반복 (예: a{2,4}는 'a'가 2~4회 등장)
3. Java에서 정규표현식 사용 예시
문자열의 패턴 일치 확인
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class RegexExample {
public static void main(String[] args) {
String pattern = "^[a-zA-Z0-9]{5,10}$"; // 5~10자의 알파벳과 숫자로 이루어진 문자열
String input = "Hello123";
// Pattern과 Matcher 사용
Pattern compiledPattern = Pattern.compile(pattern);
Matcher matcher = compiledPattern.matcher(input);
if (matcher.matches()) {
System.out.println("패턴과 일치합니다.");
} else {
System.out.println("패턴과 일치하지 않습니다.");
}
}
}
|
cs |
텍스트 검색과 대체
1
2
3
4
5
6
7
8
9
10
|
public class RegexReplaceExample {
public static void main(String[] args) {
String input = "My phone number is 010-1234-5678";
String pattern = "\\d{3}-\\d{4}-\\d{4}";
// 전화번호를 찾고 익명화 처리
String result = input.replaceAll(pattern, "XXX-XXXX-XXXX");
System.out.println(result);
}
}
|
cs |
4. 자주 사용하는 정규표현식 예시
- 이메일 검증: ^[\\w.-]+@[\\w.-]+\\.[a-zA-Z]{2,}$
- URL 검증: ^(http|https)://[\\w.-]+\\.[a-zA-Z]{2,}(\\S*)$
- 전화번호: \\d{2,3}-\\d{3,4}-\\d{4}
- 숫자만: ^\\d+$
5. 요약
정규표현식은 문자열 패턴을 처리할 수 있는 강력한 도구로, Java의 Pattern과 Matcher 클래스를 통해 효과적으로 사용할 수 있습니다. 이를 활용하여 문자열을 검사하고 변환하며, 필요에 따라 다양한 텍스트 데이터를 처리할 수 있습니다.
반응형