초보자를 위한 정규식(Regex) 기초, 10분 완벽 정리 | 가이드북 제공

실무에서 바로 활용가능한 정규식(Regex) 완벽 정리! 자주 쓰이는 정규식 패턴과 실습 예제까지, 쉽고 간결한 정리로 Regex 기초를 마스터하세요!🔥

# 데이터분석 # 엑셀기능

작성자 :
오빠두엑셀
최종 수정일 : 2024. 07. 18. 06:40
URL 복사
메모 남기기 : (9)

초보자를 위한 정규식(Regex) 기초, 10분 완벽 정리

정규식 Regex 기초 목차 바로가기
영상 강의

큰 화면으로 보기

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [기초레벨업] 초보자를 위한 Regex 총정리 마스터 시트
    예제파일

실무에서 정규식(Regex)이 필요한 이유

엑셀로 업무를 하다 보면 다양한 형식의 데이터를 다루게 됩니다. 만약 아래 그림과 같이 깔끔하게 정리된 데이터라면, 빠른채우기나 간단한 함수를 사용해 편리하게 데이터를 가공할 수 있습니다.

엑셀-빠른채우기-예제-gif-min
정형화된 데이터는 빠른채우기로 손쉽게 가공할 수 있습니다.
오빠두Tip : 엑셀 빠른채우기 기능에 대한 자세한 설명은 아래 5분 기초 영상 강의를 참고하세요!👇

하지만 가끔씩 아래 그림과 같이 정형화되지 않은 텍스트 데이터를 가공해야 할 경우에는, 빠른채우기나 함수만으로는 해결이 어려워 난관에 봉착하게 되는데요. 이럴 때, 오늘 소개해드리는 정규식(Regex) 을 활용하면 간단하게 해결할 수 있습니다.

엑셀-regex-함수-예제-gif-min
Regex 함수를 활용하면 비정형화된 데이터를 편리하게 가공할 수 있습니다.

엑셀 정규식(Regex), 언제 사용하나요?

실무에서 정규식은 크게 2가지 상황에 사용합니다.

  • 데이터 유효성 검사
    : 데이터가 올바른 형식으로 작성되었는지 검토할 때
    예) "010-xxxx-xxxx 형식인가?", "영어, 숫자, 특수문자를 모두 포함한 패턴인가?" 등

    특정 패턴의 단어 추출/변환

    : 긴 문장에서 특정 패턴을 가진 항목을 추출 또는 변경
    예) "주민등록번호 뒷 6자리 숨기기", "상품코드 특정 부분 일괄 변경" 등

이번 강의를 통해 정규식을 마스터하면, 엑셀 업무 효율을 크게 향상시킬 수 있습니다. 자, 정규식의 기본부터 실전 활용까지! 실무에 꼭 필요한 예제를 통해서 하나씩 알아보겠습니다. 😎

초보자도 10분 안에 이해하는 정규식 기초

정규식을 처음 접하면, 온통 기호 투성이여서 당황스러울 수 있는데요..!!😱

정규식-복잡
정규식을 처음 접하면 복잡한 기호 때문에 다소 어렵게 느껴질 수 있습니다.

하지만 기호를 하나씩 살펴보면 생각보다 어렵지 않습니다. 기본 개념과 주요 메타문자 몇가지만 익히면, 누구나 정규식을 쉽게 읽고 쓸 수 있습니다!😉

정규식의 기본 형태

정규식은 슬래시("/") 기호 안에 작성합니다. 예를 들어, 아래와 같이 패턴을 작성하면, 문장에서 apple 이라는 단어가 검색됩니다.

/apple/
regex-정규식-기초
정규식 패턴은 슬래시(/) 기호 안에 작성합니다.
오빠두Tip : 정규식에서 "/" 기호는 Flag로 사용됩니다! 예를 들어 "g"는 여러 항목(global) 검색, "i" 는 대소문자 일치 검색(intensive) 등을 설정할 수 있습니다. 하지만 엑셀 함수에서는 기본 값(global, multiline, intensive)이 적용되니, 이러한 설정이 있다는 것만 기억하세요!😉

하지만 엑셀 Regex 함수에서는 "슬래시(/)" 기호 없이 패턴만 입력합니다.

=REGEXEXTRACT(문장, "apple", 1)
'문장에서 apple 이라는 단어를 모두 추출합니다.
엑셀-regex-함수-패턴
엑셀 REGEX 함수에서는 슬래시(/) 기호 없이 패턴만 작성합니다.

이번에 새롭게 추가된 REGEX 함수는 'REGEXTEST, REGEXEXTRACT, REGEXREPLACE' 로 총 3개 입니다. REGEX 관련 함수의 실전 활용 예제는 다음 강의에서 자세히 살펴보겠습니다.

실무에 꼭 필요한 정규식 메타 문자 15가지

정규식에서 특별한 역할을 수행하는 기호를 "메타 문자" 라고 합니다. 메타 문자는 아래 15개 기호만 기억하면 충분합니다!👍

구분 메타문자 설명
Group | 또는(OR) 연산자
() 그룹 지정
Boundary ^ 단어 시작
$ 단어 끝
\b 단어 경계
\B 단어 경계가 아님
Quantifier ? 있거나 없거나 (0 or 1)
* 있거나 없거나 많거나 (0 or More)
+ 최소 1회 이상 (1 or More)
{n} n회 반복
{min,max} 최소, 최소 반복
Escape \ 메타문자 기호 상실
Characters \d 숫자(0~9)
\w 문자(알파벳, 숫자, _)
\s 공백 문자
TextRange [] 문자 집합 및 범위 지정
1. Group 관련 기호
  1. | (세로 바) : 또는(or)
    "apple|orange"
    → apple 과 orange를 검색
  2. () (괄호) : 패턴을 그룹으로 지정
    "(apple|orange) juice"
    → apple juice와 orange juice를 검색
Boundary 관련 기호
  1. ^ (캐럿) : 단어의 시작 지점
    ^apple
    → apple로 시작하는 단어를 검색
  2. $ (달러) : 단어의 끝 지점
    juice$
    → juice로 끝나는 단어를 검색
  3. \b : 단어 경계를 구분
    \bcat\b
    |the| |concatenate| |cat| |is| |category|
  4. \B : 단어 경계가 아닌 곳을 구분
    \Bcat\B
    → t|h|e c|o|n|c|a|t|e|n|a|t|e c|a|t i|s c|a|t|e|g|o|r|y
Quantfier 기호
  1. ? (물음표) : 0번 또는 1번 발생
    ap?le
    → ale 또는 aple
  2. * (별표) : 0번 또는 여러번 발생
    ap*le
    → ale, aple, apple, apppppple, ...
  3. + (더하기) : 1번 또는 여러번 발생
    ap+le
    → aple, apple, appppple, ...
  4. {n} : n번 반복
    ap{2}le
    → apple
  5. {min, max} : 최소~최대 반복
    ap{2,4}le
    → apple, appple, apppple
Escape 기호
  1. \ (백슬래시) : 메타 문자의 기능을 없애고 일반 문자로 해석
    apple?
    → appl, apple (?가 메타문자로 동작)
    apple\?
    → apple? 을 검색
Character 기호
  1. \d : 0부터 9까지 숫자
    1919-03-01
    삼일절은 한국이 일본의 식민 통치에 저항하여 일어난 독립운동을 기념하는 날입니다.
    It is a Day commemorating the independence movement that arose in Korea in resistance to Japanese colonial rule.
  2. \w : 0부터 9까지 숫자, 알파벳, 언더바(_)
    1919-03-01
    삼일절은 한국이 일본의 식민 통치에 저항하여 일어난 독립운동을 기념하는 날입니다.
    It is a Day commemorating the independence movement that arose in Korea in resistance to Japanese colonial rule.
    오빠두Tip : "\w"는 숫자와 알파벳만 검색합니다. 한글은 "[가-힣]"으로 검색할 수 있습니다!😉
  3. \s : 공백 문자(탭, 줄바꿈, 공백, 띄어쓰기)
    1919-03-01                                                                                               
    삼일절은 한국이  일본의  식민  통치에 저항하여 일어난 독립운동을 기념하는 날입니다.    
    It is a Day commemorating the independence movement that arose in Korea in resistance to Japanese colonial rule.                                              
오빠두Tip : 대문자를 사용하면 반대의 경우를 검색할 수 있습니다!😉

\D: 숫자 아님, \W: 문자 아님, \S: 공백 아님

TextRange 기호
  1. [abc] : a, b, c를 검색
    Apple Banana Carrot brave juice 4,900won
    용사의 사과 바나나 당근 주스 4,900원
    ㅋㅋㅋ 맛있게 같이 즐겨요!
  2. [ABC] : A, B, C를 검색
    Apple Banana Carrot brave juice 4,900won
    용사의 사과 바나나 당근 주스 4,900원
    ㅋㅋㅋ 맛있게 같이 즐겨요!
  3. [a-z] : a부터 z까지 소문자 검색
    Apple Banana Carrot brave juice 4,900won
    용사의 사과 바나나 당근 주스 4,900원
    ㅋㅋㅋ 맛있게 같이 즐겨요!
  4. [a-zA-Z0-9] : 소문자, 대문자, 숫자 검색
    Apple Banana Carrot brave juice 4,900won
    용사의 사과 바나나 당근 주스 4,900
    ㅋㅋㅋ 맛있게 같이 즐겨요!
  5. [a-zA-Z가-힣ㄱ-ㅎㅏ-ㅣ] : 소문자, 대문자, 한글, 자음, 모음 검색
    Apple Banana Carrot brave juice 4,900won
    용사의 사과 바나나 당근 주스 4,900
    ㅋㅋㅋ 맛있게 같이 즐겨요!

실무에서 자주 쓰이는 정규식 패턴 예제

실무에서 자주 쓰이는 정규식 패턴을 정리했습니다. 정규식 패턴을 해석하는 방법은 영상 강의 11:04 를 참고하세요!

Regex 설명
\d{3}-?\d{3,4}-?\d{4} 휴대폰 번호
\d{2,3}-?\d{3,4}-?\d{4} 일반 전화번호
[a-zA-Z0-9+-\_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+ 이메일
(https|http):\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#()?&\/\/=]*) URL 주소
([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9] 시:분
(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d) 시:분:초
<\/?[\w\s]*>|<.+[\W]> HTML 태그
(\b\w+\b)(?=.*\b\1\b) 중복값
(\b[0-9]+\b)(?=.*\b\1\b) 중복값(숫자)

ChatGPT로 정규식 패턴 만들기

지금까지 정규식의 기본 개념과 실무에서 꼭 필요한 메타문자를 살펴봤습니다. 하지만 막상 복잡한 패턴의 정규식을 처음부터 작성하는 것은 어려울 수 있는데요.

실무에서는 정규식을 직접 작성하는 것보다 ChatGPT를 활용해 정규식 초안을 생성한 후, 지금까지 배운 내용을 바탕으로 필요한 부분을 적절히 수정해서 작성하면 편리합니다.

ChatGPT에게 정규식을 요청할 때에는 아래 프롬프트를 활용해보세요!

#명령어#
너는 지금부터 Regex 생성기로 행동해.
주어진 단어를 추출하는 Regex를 작성할 것.
단어의 패턴을 이해하고 최대한 비슷한 구조의 다양한 단어를 추출하는 Regex로 작성해 줘.
Regex의 동작 설명이나 예제는 작성하지 말고, Regex만 답변해.
#단어#

예를 들어, 아래와 같이 요청하면 주민등록번호를 추출하는 정규식 패턴을 만들 수 있습니다.

#명령어#
너는 지금부터 Regex 생성기로 행동해.
주어진 단어를 추출하는 Regex를 작성할 것.
단어의 패턴을 이해하고 최대한 비슷한 구조의 다양한 단어를 추출하는 Regex로 작성해 줘.
Regex의 동작 설명이나 예제는 작성하지 말고, Regex만 답변해.
#단어#
850101-1234567
920305-2345678
010725-3456789
chatgpt-Regex-생성-프롬프트
ChatGPT를 활용하면 정규식을 손쉽게 작성할 수 있습니다.
5 6 투표
게시글평점
9 댓글
Inline Feedbacks
모든 댓글 보기
9
0
여러분의 생각을 댓글로 남겨주세요.x