김찬진의 개발 블로그

23/02/01 [정규표현식(regex)?] 본문

1일1배움/Java

23/02/01 [정규표현식(regex)?]

kim chan jin 2023. 2. 1. 15:11

정규표현식 연습

\w: 알파벳, 한글, 숫자, 언더바

\w를 표현하기 위해선 실제로는 \\w이렇게 써야함

정규 표현식 역슬래시(\)는 확장문자

역슬래시 다음에 일반 문자가 오면 특수문자로 취급하고 역슬래시 다음에 특수문자가 오면 그 문자 자체를 의미

표현 문법
\ 확장 문자의 시작
\b 단어의 경계
\B 단어가 아닌 것의 경계
\A 입력의 시작부분
\G 이전 매치의 끝
\z 입력의 끝
\Z 입력의 끝이지만 종결자가 있는 경우
\s 공백문자
\S 공백문자를 제외한 문자
\w 알파벳, 숫자, 한글, 언더바 문자
\W 알파벳, 숫자, 한글, 언더바를 제외한 문자
\d 숫자, 즉 [0-9]와 동일
\D 숫자를 제외한 문자
^ 문자열의 시작
$ 문자열의 끝
. 임의의 한 문자
* 앞 문자가 0번 이상 발생
+ 앞 문자가 1번 이상 발생
? 앞 문자가 0번 또는 1번 발생
[] 문자의 집합 또는 범위를 나타냄
[0-9]: 0부터 9까지 범위 중 하나의 문자
[a-z]: a부터 z까지 범위 중 하나의 문자

[^0-9]: 0부터 9까지 범위를 제외한 하나의 문자
[^a-z]: a부터 z까지 범위를 제외한 하나의 문자
{} 횟수 또는 범위를 의미
{3}: 문자 3번 등장
{2,3}: 문자 2번 또는 3번 등장
() 소괄호 안의 문자를 하나의 문자로 인식
| or 조건
?: 콜론(:) 우측 문자 이외의 것은 제외함
   
   

 

정규 표현식 설명
^[0-9]*$ 숫자 (0부터 9까지의 범위에서 0번 이상의 문자들)

^: 문자열 시작

[]: 문자의 집합 또는 범위
0-9: 0부터 9까지 범위 중 하나의 문자
*: 문자가 0번 이상 발생

$: 문자열 끝
^[a-zA-Z]*$ 영문자 (a부터 z까지, A부터 Z까지의 범위에서 0번 이상의 문자들)

^: 문자열 시작

[]: 문자의 집합 또는 범위
a-zA-Z: a부터 z까지, A부터 Z까지 범위 중 하나의 문자
*: 문자가 0번 이상 발생

$: 문자열 끝
^[가-힣]*$ 한글 (가부터 힣까지 범위에서 0번 이상의 문자들)

^: 문자열 시작

[]: 문자의 집합 또는 범위
가-힣: 가부터 힣까지 범위 중 하나의 문자
*: 문자가 0번 이상 발생

$: 문자열 끝
\\w+@\\w+\\.\\w+(\\.\\w+)? E-Mail (e.g. java@naver.com)

\: 확장문자 시작
\w+: 알파벳, 숫자, 한글, 언더바가 1번 이상 발생 (e.g. java)

@: @ (e.g. @)

\: 확장문자 시작
\w+: 알파벳, 숫자, 한글, 언더바가 1번 이상 발생 (e.g. naver)

\\.: . (문자열이 아니므로 \\.(확장문자+이스케이프 문자 사용)) (e.g. .)

\: 확장문자 시작
\w+: 알파벳, 숫자, 한글, 언더바가 1번 이상 발생 (e.g. com)

(): 소괄호 속 문자들을 하나의 문자로 취급
?: 문자가 0번 또는 1번 발생
(\\.\\w+)?: 소괄호 속 문자들을 한 문자로 취급하되 그 문자가 최소 1번 발생
(이메일 형식을 강제하기 위함!)

^\d{2,3}-\d{3,4}-\d{4}$ 전화번호 (e.g. 02-910-1234, 010-1234-5678)

^: 문자열 시작

\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{2,3}: 문자의 갯수가 2개 또는 3개 등장(e.g. 02, 010)

-: - (문자열이므로 그냥 -(하이픈) 사용) (e.g. -, -)

\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{3,4}: 문자의 갯수가 2개 또는 3개 등장 (e.g. 910, 1234)


\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{4}: 문자의 갯수가 4개 등장 (e.g. 1234, 5678)

$: 문자열 끝
^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ 휴대전화번호 (e.g. 010-1234-5678, 018-999-8888)

^: 문자열 시작

01: 01
(): 소괄호 속 문자들을 하나의 문자로 취급
?: 콜론(:) 우측 문자 이외의 것은 제외함
0|1|[6-9]: 0 또는 1 또는 6,7,8,9 중 하나의 문자 (e.g. 010, 018)

-: - (문자열이므로 그냥 -(하이픈) 사용) (e.g. -, -)

(): 소괄호 속 문자들을 하나의 문자로 취급
?: 콜론(:) 우측 문자 이외의 것은 제외함
\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{3}: 문자가 3번 등장
|: 또는
\d:숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{3}: 문자가 4번 등장
 (e.g. 1234, 999)

-: - (문자열이므로 그냥 -(하이픈) 사용) (e.g. -, -)

\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{4}: 문자가 4번 등장
 
(e.g. 5678, 8765)


$: 문자열 끝

\d{6} \- [1-4]\d{6} 주민등록번호 (e.g. 971111-1234567)

\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{6}: 문자가 6번 등장 (e.g. 971111)

\-: - (문자열이 아니므로  \-(이스케이프 문자) 사용) (e.g. -)

[1-4]: 1부터 4까지의 범위 중 하나의 문자
\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{6}: 문자가 6번 등장 
(e.g. 1234567)
^\d{3}-\d{2}$ 우편번호 (e.g. 123-45)

^: 문자열 시작

\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{3}: 문자가 3번 등장 (e.g. 123)


-: - (문자열이므로 그냥 -(하이픈) 사용) (e.g. -)

\d: 숫자, 즉 [0-9]와 동일, 0부터 9까지의 범위 중 하나의 문자
{2}: 문자가 2번 등장 (e.g. 45)


$: 문자열 끝
Comments