본문 바로가기
lesson/REGex

정규 표현식 01. 집합, 문자 클래스

by Peter Choi 2023. 12. 15.
반응형

01) 집합

- 대괄호, []은 집합을 나타내는 기호

-하이픈(-)은 범위를 나타내는 기호

- 캐럿(^)은 not을 의미한다.

 

문자 클래스:  

 

위의 이론적 내용에 대한 복습을 위해서 리트코드 125번 문제를 가져와보겠다

https://leetcode.com/problems/valid-palindrome/

 

Valid Palindrome - LeetCode

Can you solve this real interview question? Valid Palindrome - A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric cha

leetcode.com

 

이 문제는 유효한 팰린드롬이라는 문제인데 이 문제를 가져온 이유는 문자열을 입력받을 때 좌우 대칭인지 확인하기 전에 소문자, 대문자를 제외한 나머지 부분은 삭제하는 전처리 과정을 거칠 필요가 있기 때문이다.

 

이와 같은 문자열 탐색에서 정규 표현식은 유용하게 이용된다. 

public class solution {
    public static void main(String args[]) {
        String input = "AMAIIAMA";
        P1 obj = new P1();
        boolean isPalindrome = obj.isPalindrome(input);
        System.out.println(isPalindrome);
    }

    public boolean isPalindrome(String s) {
        String sLower = s.toLowerCase();
        String sRemoved = sLower.replaceAll("[^a-zA-Z0-9]", ""); //정규표현식
        String revStr = ""; //초기화

        for(int i = sRemoved.length() - 1; i >= 0 ; i--) {
            revStr += sRemoved.charAt(i);
        }
        if (sRemoved.equals(revStr)) {
            return true;
        }
        return false;
    }
}

위에서 replaceAll이라는 메소드를 사용하여 [^a-zA-z0-9]라는 정규 표현식에 포함되는 부분 즉, !, ?같은 소문자, 대문자, 숫자 전체에 대한 집합의 not gate로 묶은 나머지 느낌표나 물음표같은 기호를 제외하도록 하겠다는 의미를 포함하고 있다.

 

 

반응형

'lesson > REGex' 카테고리의 다른 글

정규 표현식 00. 시작  (2) 2023.12.08

댓글