정규 표현식이란?

정규 표현식, regexp 또는 regex라고 불리는 정규표현식(regular expression)은 일정한 규칙(패턴)을 가진 문자열을 표현하는 방법입니다. 복잡한 문자열 속에서 특정한 규칙으로 된 문자열을 검색한 뒤 추출하거나 바꿀 때 사용합니다. 또는, 문자열이 정해진 규칙에 맞는지 판단할 때도 사용합니다.

 

특정한 규칙을 가진 문자열의 집합을 추출할 수 있어서 주민등록 번호, 전화번호, 도서 ISBN 등 형식이 있는 문자열을 원본 문자열로부터 추출할 때 사용합니다. 다르게 말하면, Programming Language나 Text Editor 등에서 문자열의 검색과 치환을 위한 용도로 쓰이고 있습니다. 

  • 장점 : 일반적인 조건문으로는 복잡할 수 있지만, 정규 표현식을 이용하면 매우 간단하게 표현 할 수 있음.
  • 단점 : 코드가 간단한 만큼 가독성이 떨어져서 표현식을 숙지하지 않으면 이해하기 힘듬.

 

정규표현식 표현방법

정규표현식은 표준인 POSIX의 정규표현식과 POSIX 정규표현식에서 확장된 Perl방식의 PCRE가 대표적이고, 이외에도 수많은 정규표현식이 존재하며 정규 표현식 간에는 약간의 차이점이 있습니다.

정규 표현식에서 사용하는 기호를 Meta문자라고 하고 이 Meta문자는 표현식 내부에서 특정한 의미를 갖는 문자를 말하며, 공통적인 기본 Meta 문자의 종류는 아래와 같습니다.

 

공통 기본 Meta

정규 표현식 표현 설명
^x
문자열이 x로 시작
x$
문자열이 x로 끝
.x
임의의 한 문자를 표현(x가 마지막으로 끝남)
x+
x가 1번이상 반복
x?
x가 존재하거나 존재하지 않음.
x*
x가 0번이상 반복
x|y
x 또는 y를 찾음(or 연산자를 의미)
(x)
()안의 내용을 캡쳐하며, 그룹화
(x)(y)
그룹화 할 때, 자동으로 앞에서부터 1번부터 그룹 번호를 부여해서 캡쳐.
결과값에 그룹화한 Data가 배열 형식으로 그룹번호 순서대로 들어감.
(x)(?:y)
캡쳐하지 않는 그룹을 생성할 경우 ?:를 사용함.
결과값 배열에 캡쳐하지 않는 그룹은 들어가지 않음.
x{n}
x를 n번 반복한 문자를 찾음.
x{n,}
x를 n번이상 반복한 문자를 찾음.
x{n,m}
x를 n번이상 m번이하 반복한 문자를 찾음

 

한 문자만 지정하는 Meta 문자 : []

정규 표현식 표현 설명
[xy]
x, y 중 하나를 찾습니다.
[^xy]
x, y를 제외하고 문자 하나를 찾습니다.
(문자 클래스 내의 ^는 not을 의미)
[x-z]
x~z 사이의 문자 중 하나를 찾습니다.
\^
^(특수문자)를 식에 문자 자체로 포함합니다.(escape)
\b
문자와 공백 사이의 문자를 찾습니다.
\B
문자와 공백 사이가 아닌 값을 찾습니다.
\d
숫자를 찾습니다.
\D
숫자가 아닌 값을 찾습니다.
\s
공백문자를 찾습니다.
\S
공백이 아닌 문자를 찾습니다.
\t
Tab 문자를 찾습니다.
\v
Vertical Tab 문자를 찾습니다.
\w
알파벳 + 숫자 + _ 를 찾습니다.
\W
알파벳 + 숫자 + _ 을 제외한 모든 문자를 찾습니다.

 

 

자주 사용되는 패턴

1) 숫자만 : ^[0-9]*$

2) 영문자만 : ^[a-zA-Z]*$

3) 한글만 : ^[가-힣]*$

4) 영어 & 숫자만 : ^[a-zA-Z0-9]*$

5) E-Mail : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$

6) 휴대폰 : ^01(?:0|1|[6-9]) - (?:\d{3}|\d{4}) - \d{4}$

7) 일반전화 : ^\d{2.3} - \d{3,4} - \d{4}$

8) 주민등록번호 : \d{6} - [1-4]\d{6}

9) IP 주소 : ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3}) . ([0-9]{1,3})

10) 라인 확인 : (?m)^[ \t]*\r?\n

 

정규식 공부하기 좋은 알고리즘 문제로 2021년 카카오 블라인드 테스트 1차 코딩테스트 1번 문제를 추천합니다.

 

코딩테스트 연습 - 신규 아이디 추천

카카오에 입사한 신입 개발자 네오는 카카오계정개발팀에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. 네오에게 주어진 첫 업무는 새로 가

programmers.co.kr

 

 

 

위의 표현은 아래 사이트를 통해 나온 표현 방식입니다.

 

Regexper

 

regexper.com

참고 사이트

 

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

 

정규표현식(Regular Expression)을 소개합니다.

날이 갈수록 개인정보 보호에 관련하여 보안정책을 점진적으로 강화하고 있습니다. 이에 따라 Web에서 회원가입 시 Password 설정을 복잡해진 보안정책에 맞추다 보니 복잡하게 조합해야만 정상적

www.nextree.co.kr

 

+ Recent posts