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() 메서드를 상황에 맞게 선택하여 사용하면 됩니다.