inblog logo
|
silver
    기술정리

    [기술정리] 정규표현식

    silver's avatar
    silver
    Jan 07, 2025
    [기술정리] 정규표현식
    Contents
    1. 기본 특수문자2. 문자 클래스 (Character Class)3. 공백 및 특수문자4. 자주 쓰는 정규식5. Java에서 정규표현식 사용법정리
    정규표현식(Regex, Regular Expression)은 문자열에서 특정한 패턴을 찾거나 치환하는 데 사용된다. Java에서는 String 클래스의 matches(), split(), replaceAll(), Pattern 및 Matcher 클래스를 사용하여 정규표현식을 다룰 수 있다.

    1. 기본 특수문자

     
    • . → 임의의 한 문자(개행 제외)
    • 예: "a.b"는 "acb", "a1b"에 매칭됨
    • ^ → 문자열의 시작
    • 예: "^hello"는 "hello world"에서 시작할 때만 매칭
    • $ → 문자열의 끝
    • 예: "world$"는 "hello world"에서 "world"로 끝나야 매칭
    • * → 앞 문자가 0번 이상 반복
    • 예: "ab*c"는 "ac", "abc", "abbc"에 매칭됨
    • + → 앞 문자가 1번 이상 반복
    • 예: "ab+c"는 "abc", "abbc"에 매칭되지만 "ac"는 매칭되지 않음
    • {n} → 앞 문자가 정확히 n번 반복
    • 예: "a{3}"는 "aaa"에만 매칭됨
    • {n,} → 앞 문자가 n번 이상 반복
    • 예: "a{2,}"는 "aa", "aaa", "aaaa"에 매칭됨
    • {n,m} → 앞 문자가 n~m번 반복
    • 예: "a{2,4}"는 "aa", "aaa", "aaaa"에 매칭됨
     

    2. 문자 클래스 (Character Class)

     
    • [abc] → a, b, c 중 하나 • [^abc] → a, b, c 제외한 문자 • [a-z] → 소문자 a~z 중 하나 • [A-Z] → 대문자 A~Z 중 하나 • [0-9] → 숫자 0~9 중 하나 • [a-zA-Z0-9] → 영문자 및 숫자 중 하나
     

    3. 공백 및 특수문자

    • \s → 공백(스페이스, 탭, 줄바꿈 등)
    • \S → 공백이 아닌 문자
    • \d → 숫자 ([0-9]와 동일)
    • \D → 숫자가 아닌 문자 ([^0-9]와 동일)
    • \w → 영문자+숫자+언더스코어 ([a-zA-Z0-9_])
    • \W → 영문자+숫자+언더스코어 아닌 것
     

    4. 자주 쓰는 정규식

     
    • 전화번호 형식(000-0000-0000)
    ^\d{3}-\d{4}-\d{4}$
    • 이메일 형식
    ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$
    • HTTP/HTTPS URL 형식
    https?://[^\s]+
    • 6~12자 영어+숫자 비밀번호
    ^[A-Za-z0-9]{6,12}$
    • 정확히 5글자 단어 찾기
    \b[a-zA-Z]{5}\b
     

    5. Java에서 정규표현식 사용법

     1) split()

    String text = "Hello world! Java is great."; String[] words = text.split("\\s+"); // 공백 기준으로 분리 System.out.println(Arrays.toString(words));

    2) matches() 예제 (전화번호 검증)

    String phoneNumber = "010-1234-5678"; boolean isValid = phoneNumber.matches("^\\d{3}-\\d{4}-\\d{4}$"); System.out.println(isValid); // true

    3) replaceAll() 예제 (특수문자 제거)

    String input = "Hello! @Java#123"; String cleanText = input.replaceAll("[^a-zA-Z0-9 ]", ""); System.out.println(cleanText); // "Hello Java123"

    4) Pattern과 Matcher 사용 예제

    import java.util.regex.*; public class RegexExample { public static void main(String[] args) { String text = "My email is example@email.com"; Pattern pattern = Pattern.compile("[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"); Matcher matcher = pattern.matcher(text); if (matcher.find()) { System.out.println("이메일 찾음: " + matcher.group()); } } }
     

    정리

    💡
    • . → 모든 문자 (개행 제외) • ^, $ → 문자열 시작과 끝 • *, +, {n,m} → 반복 • \\s, \\d, \\w → 공백, 숫자, 영문자 • [abc], [a-z] → 특정 문자 포함 • Java에서 split(), matches(), replaceAll(), Pattern 활용 가능
    Share article
    Contents
    1. 기본 특수문자2. 문자 클래스 (Character Class)3. 공백 및 특수문자4. 자주 쓰는 정규식5. Java에서 정규표현식 사용법정리

    silver

    RSS·Powered by Inblog