Java - Regex - Conditional

최대 1 분 소요

Java - Regex - Conditional

  • Regex에서도 문자열의 패턴에 따라 if statement를 구성할 수 있습니다.
  • 아래 코드에서는 일반적인 시간 표시(15:56)과 같은 시간만 유효하도록 판단하는 regex를 만들었습니다.
import java.util.*;

class Main {
    public static void main(String[] args) throws Exception {
        /*
        String regex = "^([0-1]{1}?[0-9]|2[0-3]):[0-5][0-9]";
        */
        /*
        regex 내에서 if를 사용하려면 다음처럼 사용해야 합니다.
        ^(<condition> ? <trueResult>|<falseResult>)
        - 일단 ^으로 시작하고 양쪽을 ()로 열고 닫아 줍니다.
        - <condition>: 넣고 싶은 조건을 넣습니다.
        - <trueResult>: 조건이 충족될 경우의 조건을 넣습니다.
        즉 이 경우에는 condition+trueResult pattern인지 확인하는 것이겠죠.
        - <falseResult>: 조건이 충족되지 않을 경우의 조건을 넣습니다.
        이 경우에는 falseResult pattern인지 확인하는 것이죠.
        */
        /*
        === Example1 ========================================
        - 시간을 표시하는 23:59와 같은 패턴인지 확인합니다.
        시간의경우 00부터 09, 10부터 19까지 모두 가능하지만,
        앞에 2가 나오게 되면 0-3까지만 가능하죠.
        - condition: [0-1]{1}, [0-1]이 1번 나오면
        - trueResult: [0-9], [0-9]까지 모두 가능하다.
        - falseResult: 아니면([0-1]이 1번 나오지 않으면)
        2[0-3] 패턴이 등장한다.
        */
        String regexConditional = "^([0-1]{1}?[0-9]|2[0-3])";
        String otherRegex = ":[0-5][0-9]";
        String pattern1 = regexConditional + otherRegex;

        System.out.println("00:01".matches(pattern1)); // true
        System.out.println("00:59".matches(pattern1)); // true
        System.out.println("23:01".matches(pattern1)); // true
        System.out.println("24:00".matches(pattern1)); // false
        System.out.println("24:00".matches(pattern1)); // false
    }
}

댓글남기기