프로그래밍

정규표현식(Regex) 기본문법과 예제 - 이메일, 전화번호

ohlee52 2024. 12. 9. 14:23
반응형

 

프로그래밍을 하다 보면 특정 패턴의 문자열을 찾아내거나 변환해야 할 때가 많습니다. 이메일 주소를 검증하거나, 로그에서 특정 데이터를 추출하거나, 텍스트를 검색해 수정하는 작업 등이 있겠습니다.

이때 유용하게 쓰이는 도구가 바로 정규표현식(Regular Expressions)입니다.

정규식 이라고 하기도 하고 영어로는 Regex라고 하던데, 레겍스라고 읽는거 같습니다.


정규표현식이란?

정규표현식(줄여서 RegEx)은 문자열에서 원하는 패턴을 찾거나 조작하기 위해 사용하는 형식언어 입니다. 특정한 스트링을 찾는게 아니라, 어떤 특정 형식의 스트링을 찾을 때 쓰입니다. 예를들어 숫자만 찾던지, 문자중에서도 특정 단어가 있는지 확인할때도 쓰이고요.

다양한 프로그래밍 언어에서 지원하며, 대표적인 쓰임으로는 다음과 같습니다. 

  • 특정 단어나 문장의 유무 확인
  • 문자열 패턴 매칭 (예: 이메일, 전화번호, 우편번호)
  • 텍스트 대체 및 치환

예를 들어, "abc123@gmail.com" 같은 이메일 주소를 검증하려면 정규표현식을 활용해 해당 문자열이 이메일 형식에 맞는지 확인할 수 있습니다.


기본 문법

정규표현식은 특수 문자를 사용하여 패턴을 정의하는데요, 많이 쓰이는 문법 몇가지를 가져와봤습니다.

. 임의의 한 문자 a.c  abc, a1c
* 앞 문자가 0번 이상 반복 ab*c  ac, abc, abbc  >>> a와 c 사이에 아무것도 없거나 b가 한개이상 있는 단어
+ 앞 문자가 1번 이상 반복 ab+c  abc, abbc 
? 앞 문자가 0번 또는 1번 나타남 ab?c  ac, abc
\d 숫자 (0-9) \d  1, 2, 9
\w 문자, 숫자, 밑줄 ([a-zA-Z0-9_]) \w+  abc, 123, a1b
[] 대괄호 안의 문자 중 하나와 매칭 [abc]  a, b, c
^ 문자열의 시작 ^a  apple, ant  >>> a 로 시작하는 단어
$ 문자열의 끝 z$  buzz, fizz  >>> z로 끝나는 단어

반응형

 

예제 1: 이메일 검증

^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
  • 설명:
    • ^: 문자열의 시작
    • [a-zA-Z0-9._%+-]+: 사용자 이름에 허용되는 문자
    • @: 반드시 포함되는 @ 기호
    • [a-zA-Z0-9.-]+: 도메인 이름
    • \.: 도메인과 TLD 사이의 점
    • [a-zA-Z]{2,}: TLD(최상위 도메인)는 최소 두 글자 이상

예제 2: 전화번호 추출

한국 전화번호를 추출하는 간단한 정규표현식은 다음과 같습니다:

코드 복사
\d{2,3}-\d{3,4}-\d{4}
  • 설명:
    • \d{2,3}: 2~3자리 숫자 (지역번호)
    • -: 하이픈
    • \d{3,4}: 3~4자리 숫자
    • \d{4}: 4자리 숫자

예를 들어, 010-1234-5678 또는 02-123-4567과 같은 전화번호를 매칭할 수 있습니다.


정규표현식 테스트 사이트

이렇게 표로 보는것도 좋긴 하지만, 직접 테스트 하면서 익히는게 가장 빠른 것 같습니다. 유명한 웹사이트 두개 링크를 첨부합니다.

  1. Regex101
  2. RegExr
반응형