자바

[자바 개념] 정규표현식, Pattern

라임온조 2023. 2. 10. 18:19

1. 개념

문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우에 사용하는 것

2. 정규표현식 문법

Regular Expression Description
^ 문자열의 시작
$ 문자열의 끝
. 임의의 문자 1개를 의미
* 문자가 0번 이상 반복
+ 문자가 1번 이상 반복
? 문자가 0번 혹은 1번

 

Regular Expression Description
[ ] 문자의 집합 범위를 의미
[0-9] 숫자 0부터 9
[a-z] 알파벳 a부터 z
[a-zA-Z] 알파벳 a부터 z + 알파벳 A부터 Z
[a-zA-Z0-9] 알파벳 a부터 z + 알파벳 A부터 Z + 숫자 0부터 9
[^a-z] 알파벳 a부터 z가 아닌 것
(앞에 ^ 가 붙어있을 경우 not을 의미)

 

Regular Expression Description
{ } 문자가 나오는 횟수를 의미
{x} 앞의 문자가 정확히 x번 나옴
{x, } 앞의 문자가 적어도 x번 나옴
{x,y} 앞의 문자가 최소 x번 나오고, 최대 y번 까지 나옴

 

Regular Expression Description
( ) 소괄호 안의 문자를 하나의 문자로 인식(Grouping)
| or 조건
\ 확장문자 (*아래 추가 설명 참고)

 

Regular Expression Description
\b 단어의 경계
\B 단어가 아닌 것의 경계
\s 공백문자(whitespace)
\S 공백문자가 아닌 나머지 문자
(whitespace를 제외한 문자)
\w 알파벳이나 숫자, 언더바(_) 기호
\W 알파벳이나 숫자, 언더바(_) 기호를 제외한 문자
\d 숫자 ([0-9]와 동일)
\D 숫자를 제외한 모든 문자

참고: 

https://wildeveloperetrain.tistory.com/178

 

Java 정규표현식 사용하기(Regular Expression)

일반적으로 클라이언트로부터 입력되는 데이터에 대한 validation은 프론트엔드에서 먼저 처리됩니다. 하지만 악의적인 의도로 프론트를 거치지 않고 유효성에 대한 검사가 이뤄지지 않은 데이터

wildeveloperetrain.tistory.com

3. 정규 표현식에서 주의할 점

정규식을 만들다 보면 (,[,.등 처럼 특수문자를 그대로 인식해야하는 경우나 \d등 같은 정규식 문법을 사용해야하는데, java에 "\("으로 입력해 사용하면 오류가 난다.

1) 이스케이프

이때는 특수문자 앞에는 \\이렇게 백슬래시를 2번 붙여서 사용한다. 

\\.

2) 백슬래시

이때는 \ 앞에 한번 더 붙여 사용한다.
\\d

 

4. Pattern

1) 개념

정규표현식으로 문자열을 검증할 때 사용하는 java.util.regex 패키지에 있는 클래스

2) 메서드

matches()

정규표현식에 맞는지 검증 결과를 boolean 형태로 return

boolean result = Pattern.matches("[^a]", "abc");

 

'자바' 카테고리의 다른 글

[자바 개념] IO(입출력)  (0) 2023.03.19
[자바 개념] Optional<T>  (0) 2023.03.08
[자바 개념] StringBuffer, StringBuilder  (0) 2023.02.06
[자바 개념] 자바 데이터 타입  (0) 2023.01.13
[자바 개념] stream  (0) 2023.01.13