Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java RegEx로 문자열 시작 부분 일치시키는 방법 – ^ 메타 문자 완벽 가이드

^ 메타 문자란?

정규 표현식(Regex)에서 메타 문자 ^(캐럿)는 문자열 또는 줄의 시작 위치를 나타냅니다. 패턴 맨 앞에 이 기호를 두면, 해당 패턴이 문자열의 첫 글자에서 일치할 때만 매칭되도록 만들 수 있습니다.

  • 표현식 ^\\d — 숫자로 시작하는 문자열/줄과 일치합니다.

  • 표현식 ^[a-z] — 소문자 알파벳으로 시작하는 문자열/줄과 일치합니다.

참고로 $는 반대로 문자열의 을 의미하는 메타 문자입니다. 아래 예제 2에서 함께 살펴보겠습니다.

예제 1 – 특수 문자로 시작하는 문자열 검사

다음 예제는 사용자에게 문자열을 입력받아, 영문자·숫자·공백이 아닌 문자(즉, 특수 문자)로 시작하는지 확인합니다. 정규 표현식 ^[^a-zA-Z0-9\\s].*Pattern.compile()로 컴파일한 뒤 Matcher 객체를 통해 전체 일치 여부를 판단합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Example {
    public static void main(String args[]) {
        // 사용자로부터 문자열 입력 받기
        System.out.println("문자열을 입력하세요");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        // 영문자, 숫자, 공백이 아닌 문자로 시작하는지 검사하는 정규 표현식
        String regex = "^[^a-zA-Z0-9\\s].*";
        // 정규 표현식 컴파일
        Pattern pattern = Pattern.compile(regex);
        // Matcher 객체 생성
        Matcher matcher = pattern.matcher(input);
        if (matcher.matches()) {
            System.out.println("일치합니다");
        } else {
            System.out.println("일치하지 않습니다");
        }
    }
}

실행 결과

문자열을 입력하세요
#특수 문자로 시작하는 문자열
일치합니다

예제 2 – 마침표(.)로 끝나는 문자열 찾기

이번에는 문자열의 끝을 의미하는 메타 문자 $를 활용해 보겠습니다. 정규 표현식 \\.$는 마침표(.)로 끝나는 문자열을 찾아냅니다. 다섯 개의 문자열을 입력받아 각각 검사한 후, 조건을 만족하는 문자열의 인덱스를 출력합니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String args[]) {
        // 마침표(.)로 끝나는지 검사하는 정규 표현식
        String regex = "\\.$";
        Scanner sc = new Scanner(System.in);
        System.out.println("5개의 문자열을 입력하세요:");
        String input[] = new String[5];
        for (int i = 0; i < 5; i++) {
            input[i] = sc.nextLine();
        }
        // Pattern 객체 생성
        Pattern p = Pattern.compile(regex);
        for (int i = 0; i < 5; i++) {
            // Matcher 객체 생성
            Matcher m = p.matcher(input[i]);
            if (m.find()) {
                System.out.println("문자열 " + i + "은(는) 마침표(.)로 끝납니다");
            }
        }
    }
}

실행 결과

5개의 문자열을 입력하세요:
hello how are you.
where do you live
what is your name.
welcome to tutorialspoint
The Biggest Online Tutorials Library.
문자열 0은(는) 마침표(.)로 끝납니다
문자열 2은(는) 마침표(.)로 끝납니다
문자열 4은(는) 마침표(.)로 끝납니다

예제 3 – 대문자로 시작하는 문자열 찾기

정규 표현식 ^[A-Z]는 대문자로 시작하는 문자열을 판별합니다. 시작 앵커 ^와 문자 클래스 [A-Z]를 조합하면 복잡한 로직 없이도 간단하게 구현할 수 있습니다.

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexExample {
    public static void main(String args[]) {
        // 대문자로 시작하는지 검사하는 정규 표현식
        String regex = "^[A-Z]";
        Scanner sc = new Scanner(System.in);
        System.out.println("5개의 문자열을 입력하세요:");
        String input[] = new String[5];
        for (int i = 0; i < 5; i++) {
            input[i] = sc.nextLine();
        }
        // Pattern 객체 생성
        Pattern p = Pattern.compile(regex);
        for (int i = 0; i < 5; i++) {
            // Matcher 객체 생성
            Matcher m = p.matcher(input[i]);
            if (m.find()) {
                System.out.println("문자열 " + i + "은(는) 대문자로 시작합니다");
            }
        }
    }
}

실행 결과

5개의 문자열을 입력하세요:
Sample text1
sample text2
hello how are you
Welcome to tutorialspoint
Good morning
문자열 0은(는) 대문자로 시작합니다
문자열 3은(는) 대문자로 시작합니다
문자열 4은(는) 대문자로 시작합니다

핵심 정리

  • ^는 문자열(줄)의 시작을, $는 끝을 나타내는 앵커(anchor) 메타 문자입니다.
  • Java에서는 Pattern.compile()로 정규 표현식을 컴파일하고, Matcher 객체의 matches()(전체 일치) 또는 find()(부분 일치) 메서드로 검사합니다.
  • 문자 클래스([a-z], [A-Z], [^...] 등)와 앵커를 조합하면 원하는 위치의 패턴을 정확하게 필터링할 수 있습니다.