본문 바로가기

IT/JAVA

[Java] 자바 정규식 정리

1. 정규 표현식이란

정규표현식이란 선택한 문자열에 특정 패턴 문자들이 있는지 확인하는 표현식입니다.

정규표현식을 이용해서 두가지 작업을 진행할 수 있습니다.
1) 입력된 문자열이 전화번호, 이메일, IP주소, 주민등록번호 등의 형식과 일치하는지 검증할 수 있습니다.
2) 입력된 문자열의 정해진 형식이 있다면 원하는 값을 추출할 수 있습니다. (ex: json, log, html tag 등..)

이번 포스팅에서는 문자열 검증에 대해서 정리해보겠습니다.

2. 정규 표현식 정리

정규 표현식 설명
^ 문자열의 시작
$ 문자열의 종료
. 임의의 한 문자
* 앞의 문자가 0개 ~ 여러개 있음

ex) 
[a-z]*
소문자 알파벳을 0개 ~ 여러개 입력 가능

.*
임의의 문자를 0개 ~ 여러개 입력 가능
+ 앞의 문자가 1개 ~ 여러개 

ex)
.+
임의의 문자를 1개 ~ 여러개 입력 가능
? 앞의 문자가 0개 ~ 1개 있음

ex)
.?
임의의 문자를 0개 ~ 1개를 입력할 수 있음

\.?
. 문자를 0개 ~ 1개를 입력할 수 있음
[] 문자의 집합이나 범위 안에 속한 한개의 문자를 표현할 때 사용한다.
범위를 나타낼 땐 - 기호를 사용하며 ^문자를 앞에 붙여 부정을 표현할 수 있다.

ex)
[a-z&&[^u-x]]
소문자 알파벳 중에서 u ~ x 를 제외한 나머지 알파벳만 입력이 가능하다.
{} 앞 문자의 횟수를 나타낸다

ex)
.{3,8}
임의의 문자를 3자에서 8자 사이로 입력해야한다.

[a-z]{3,} 
소문자 알파벳 3자 이상 입력해야한다.
() ()는 여러개의 문자를 하나의 덩어리로 인식한다.

ex)
(Mon|Tues|Fri)day
Monday, Tuesday, Friday를 입력할 수 있습니다.

(([01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])?
00:00:00 ~ 23:59:59 형식으로 입력하거나 빈값을 입력할 수 있다.
| 패턴 안에서 OR 연산을 수행합니다.
\w 숫자, 알파벳, _ 문자
\W \w를 제외한 문자
\d 숫자(0~9)
\D \d를 제외한 문자
\s 공백 문자 (\t\n\x\B\f\r)
\S \s를 제외한 문자
\b 공백을 기준으로 단어를 찾는다. (문자열 검색을 위해 사용되는 듯 하다.)

ex)
cat\b
cat으로 끝나는 단어를 검색한다.

input : cat concat
\B \b과 반대
\ . 이나 + 같이 정규 표현식 문자를 문자로 표현하기 위해 문자 앞에 \를 붙여야한다.

ex)
\.
\+

 

3. 자바의 정규 표현식

자바에서 정규 표현식을 사용하려면 java.util.regex 패키지의 Pattern클래스와 Matcher클래스를 사용해야 합니다.

Pattern 클래스 : 정규 표현식을 컴파일하는 객체입니다.
Mattcher 클래스 : 정규 표현식을 해석하고 입력된 문자열에 대해 일치여부를 판별할 때 사용되는 클래스입니다.
    static public void test2() {
        //숫자, 알파벳, _!@#$% 문자를 입력할 수 있다.
        Pattern pattern = Pattern.compile("[\\w!@#$]{8,13}");

        Matcher matcher = pattern.matcher("dasdqw_e#"); //true

        System.out.println(matcher.matches());
    }