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

Java 정규식(RegEx)으로 주어진 두 표현식 중 하나를 매칭하는 방법

Java 정규식에서 제공하는 논리 OR 연산자 |를 사용하면 주어진 두 표현식 중 어느 하나와 일치하도록 패턴을 만들 수 있습니다.

예를 들어, 하나의 정규식이 둘 이상의 표현식과 일치해야 하는 경우, 각 표현식을 | 기호로 구분하여 작성하면 됩니다.

예제 1: 특정 문자열로 시작하거나 끝나는 경우 매칭

다음 예제는 입력 문자열이 hello로 시작하거나 bye로 끝나는지 확인하는 정규식입니다.

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();

        // hello로 시작하거나 bye로 끝나는 문자열을 찾는 정규식
        String regex = "^hello|bye$";

        // 정규식 컴파일
        Pattern pattern = Pattern.compile(regex);

        // Matcher 객체 생성
        Matcher matcher = pattern.matcher(input);

        if(matcher.find()) {
            System.out.println("매칭 성공");
        } else {
            System.out.println("매칭 실패");
        }
    }
}

실행 결과 1

문자열을 입력하세요
hello how are you
매칭 성공

실행 결과 2

문자열을 입력하세요
This is a sample string
매칭 실패

예제 2: yes 또는 no 문자열 매칭

이번에는 String.matches() 메서드를 활용하여 입력값이 yes 또는 no인지 검사하는 예제입니다.

import java.util.Scanner;

public class RegexExample {
    public static void main(String args[]) {
        // yes 또는 no를 매칭하는 정규식
        String regex = "yes|no";

        System.out.println("입력값을 입력하세요: ");
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();

        boolean bool = input.matches(regex);

        if(bool) {
            System.out.println("매칭 성공");
        } else {
            System.out.println("허용되지 않는 입력입니다");
        }
    }
}

실행 결과 1

입력값을 입력하세요:
yes
매칭 성공

실행 결과 2

입력값을 입력하세요:
hello
허용되지 않는 입력입니다

정리

정규식에서 OR 연산자 |를 활용하면 여러 대안 표현식을 하나의 패턴으로 결합할 수 있습니다. 앵커(^, $)와 함께 사용하면 문자열의 시작 또는 끝 조건까지 유연하게 처리할 수 있으며, Pattern/Matcher 클래스나 간편한 String.matches() 메서드를 상황에 맞게 선택하여 사용하면 됩니다.