Back-End/Java

[ JAVA ] 정규표현식

oahee 2023. 7. 21. 17:42

1. 정규표현식

문자열의 패턴을 표현하는데 사용되는 특별한 문자열

java.util.regex 패키지를 통해 사용

다양한 문자열 검색, 추출, 대체 등의 작업에 유용

 

2. 요소와 의미

2.1. 문자 클래스(Character Class): 대괄호 [ ]를 사용하여 문자들의 집합을 나타냄

                                                   한 문자만 매칭시키려면 해당 문자를 대괄호 안에 적으면 됨

                                                   예)  [abc]는 'a', 'b', 'c' 중 하나의 문자와 일치

2.2. 범위(Range): 하이픈 -을 사용하여 문자 범위를 나타냄

                      예)  [a-z]는 알파벳 소문자 중 하나와 일치

2.3. 부정(Negation): ^ 기호를 문자 클래스 안에서 사용하면 해당 문자 클래스와 매치하지 않는 문자들과 일치

                          예)  [^0-9]는 숫자가 아닌 문자와 일치

2.4. 메타 문자(Meta Characters)

표현 설명
. 어떤 문자와도 일치 (줄바꿈 문자 제외)
* 앞의 문자가 0번 이상 나타날 수 있음
+ 앞의 문자가 1번 이상 나타날 수 있음
? 앞의 문자가 0번 또는 1번 나타날 수 있음
^ 문자열의 시작을 나타냄
$ 문자열의 끝을 나타냄
\ 이스케이프 문자로 다음 문자를 일반 문자로 취급함

 

 

2.5. 수량자(Quantifiers): *, +, ? 외의 문자의 수량을 조절하는 방법

표현 설명
{n} 앞의 문자가 정확히 n번 나타날 때 매치함
{n,} 앞의 문자가 최소 n번 이상 나타날 때 매치함
{n,m} 앞의 문자가 최소 n번 이상 최대 m번 이하로 나타날 때 매치함

 

 

2.6. 그룹화(Grouping): 괄호 ()를 사용하여 그룹을 지정

                               그룹을 사용하면 해당 부분 패턴이 하나의 단위로 처리됨

                               예)  (ab)+는 "ab", "abab", "ababab" 등과 일치

 


2.7. OR 연산자(|): 파이프 기호 |는 OR 연산자로, 여러 패턴 중 하나와 일치할 때 사용

                      예)  (a|b)는 'a' 또는 'b'와 일치

 


2.8. 사전 정의된 문자 클래스(Predefined Character Classes): 자주 사용되는 문자 클래스

표현 설명
\d 숫자(digit)와 일치,  [0-9]와 동일
\D 숫자가 아닌 문자와 일치,  [^0-9]와 동일
\w 단어(word) 문자와 일치,  [a-zA-Z0-9_]와 동일
\W 단어 문자가 아닌 문자와 일치,  [^a-zA-Z0-9_]와 동일
\s 공백 문자와 일치  (공백, 탭, 줄바꿈 등)
\S  공백 문자가 아닌 문자와 일치

 

 

3. 상용 정규표현식

특수문자 체크 정규식
const regExp = /[\{\}\[\]\/?.,;:|\)*~`!^\-_+<>@\#$%&\\\=\(\'\"]/g;

모든 공백 체크 정규식
const regExp = /\s/g;

숫자만 체크 정규식
const regExp = /[0-9]/g;

이메일 체크 정규식
const regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

핸드폰번호 정규식
const regExp = /^\d{3}-\d{3,4}-\d{4}$/;

일반 전화번호 정규식
const regExp = /^\d{2,3}-\d{3,4}-\d{4}$/;

아이디나 비밀번호 정규식
const regExp = /^[a-z0-9_]{4,20}$/;

휴대폰번호 체크 정규식
const regExp = /^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/;

 

4. 관련 메서드

4.1. Pattern 클래스

4.2. Matcher 클래스

 

 

 

 

 

 

 

 

 

[ JAVA ] 정규표현식 - (예) 주민등록번호, 우편번호, 국어점수

1. 주민등록번호 // 주민등록번호 000000-0000000 // resident registration number String rrn = "123456-1234567"; String regex = "[0-9]{6}-\\d{7}"; // 숫자 [0-9] \d // 반복횟수 ?(0,1) +(1,여러번) *(0, 여러번) // {n} : n번 와야함 //{

process-y.tistory.com