한국어 | English | 日本語
8.8년차 Web Application Developer 웹 개발자
기술·개발
engineering
웹 프론트엔드 및 백엔드 개발에 관련된 내용들을 주로 다룹니다

한 장으로 이해하는 정규표현식

외계어처럼 난해해 보이는 정규표현식(Regex)은 사실 한 번 익혀두면 평생 유용하게 쓰이는 개발자의 필수 무기다. 로그 분석부터 데이터 검증까지, 실무에서 마주하는 복잡한 텍스트 패턴 매칭을 단 한 줄의 식으로 해결하는 효율적인 문법 체계를 살펴본다.
개발자가 갖춰야 할 핵심 기술 중 하나인 정규표현식의 유즈케이스와 기본 원리를 학습한다. 특정 단어를 직접 명시하는 기초 문법부터 글자 타입(\d, \D), 위치 지정, 반복 횟수 제어 및 그룹핑(캡쳐)과 같은 확장 문법까지, 복잡한 패턴을 기호화하여 검색하는 방법을 체계적으로 정리한다.

개인적으로 좋아했던 구글 Tech Lead 유튜버가 개발자라면 당연히 알아야할 몇가지 스킬을 업로드한적이 있다.

이 중 오늘의 주제는 가장 첫번째에 언급된 정규표현식이다. 중간에 5번이라는 스파이가 있는듯 한데 개발자는 사실상 코딩보단 말을 많이하는 직업이라 생각해서 그리 좋은 전략은 아닌듯하다. 정규표현식은 학사때도 나중에 공부해야지 하고 메모는 많이 해놓았는데 정작 제대로 외우진 않고 매번 필요할때마다 찾아 쓴듯하다. 최근에 정리하였는데 나름 문법처럼 분류해서 외우면 쉽다. 사실 Regex 는 Tech Lead 말대로 개발하는데 너무 널리 사용된다. 텍스트 검색, 정확히는 패턴 매칭에 사용되는데 검색이라면 아래같이 수많은 유즈케이스들이 있다.

Regex 는 처음보았을때나 공부하기 전까지는 암호내지 외계어처럼 보이긴 한다. 우리가 흔히 접하는 언어는 semantic 이 word 혹은 그 조합으로 표현되지만, semantic 들이 각각 하나의 charactor 에 매핑되어있는건 암호체계와 동일하기 때문이다. 이것도 syntax 로 분류하면 아래와 같이 나뉘어지는데, 정규표현식을 익히는데 많은 도움이 된다.

One Page Explain for Regular Expression

기본적으로 특정 단어를 검색하기 위해 정규표현식을 사용하는데, 단순히 찾고싶은 1. 특정 단어를 직접 명시하는 방법도 있지만 2. 글자나 숫자 조합으로써 단어를 명시할수도 있다. 정규표현식은 이에 두 가지 방법을 제공한다.

기본 문법

간단하게 검색하고 싶은 특정 단어만 명시하면 된다. 만약 여러 단어를 한번에 검색하고 싶다면 () 안에 | 를 통해 다수의 단어를 넣으면 된다.

단어

특정 글자를 명시하고 싶을땐 단어와 같은 방식으로 사용하면 되는데 []를 통해 여러 글자를 찾을수도 있고, [] 내부에서 확장 표현을 통해 A 부터 Z 까지(A-Z) 규칙을 추가하거나 특정 글자를 제외할 수도 있다.

글자 타입

숫자 글자를 검색하고 싶다면 위에서 배운대로 [0-9] 도 좋지만 ‘숫자’ 글자 타입을 명시하여 검색할수도 있다. 글자의 타입을 명시하기 위한것이 역슬래시(\)며 예를 들면 ‘숫자’ 글자 타입은 \d 로 표현할 수 있고 ‘숫자가 아닌’ 글자 타입은 \D 와 같이 대문자로 표기할 수 있다.

확장 문법

앞뒤 위치

특정 단어 혹은 글자를 찾더라도 글의 가장 앞쪽에 혹은 가장 뒷쪽에 존재하는 것을 찾고 싶을때 사용한다.

반복 횟수

특정 단어 혹은 글자가 몇번 반복된 것을 검색하고 싶은지 명시할 수 있다.

(abc){1} = abc
(abc){1,3} = abc, abcabc, abcabcabc
(abc)? = (공백), abc
(abc)+ = abc, abcabc …

캡쳐 = 그룹핑

앞부분에서 설명하였듯 패턴으로 검색할 단어를 집합으로 묶을때 사용하거나 검색한 결과물들을 활용하려고 할때 결과값을 저장하는 역할을 한다.


정규표현식은 한번 배워두면 어떤 개발 언어에서든 모든곳에서 범용적으로 사용가능하며, 개발에서 활용할 수 있는 경우의 수가 매우 많아 유용하다. 이렇게 정리함으로써 이젠 매번 검색할일 없이 잘 사용할 수 있을듯하다.


한 장으로 이해하는 정규표현식
Author
Aaron
Posted on
Licensed Under
CC BY-NC-SA 4.0
CC BY-NC-SA 4.0
같은 카테고리 내 다른 글들
최근에 게시된 글들
Giscus CSS 커스터마이징으로 알아보는 브라우저의 보안 정책들
블로그를 새로 만들면서 기존 Hexo 블로그에서 사용하던 Discus 를 더 이상 사용하지 않고 현재 가장 편리하게 쓸 수 있는 Giscus 를 사용하게되었다. Giscus 댓글 컴포넌트를 나의 블로그 CSS 테마에 맞추기 위해 커스터마이즈한 CSS 만들어 외부에서 Giscus 에 주입하려하였다. 어째서인지 마음만큼 잘 되지 않았고, 헤매던 와중에 프론트엔드 개발자라면 질리도록 보는 CORS 뿐만 아니라 Mixed Content 와 PNA (Private Network Access) 에 대한 보안 정책들이 엉켜서 동작되지 않았던 이유들을 설명하고, Giscus 내 CSS 테마를 올바르게 적용하는 법에 대해서도 안내한다.
LLM 필터가 앗아가는 대화의 근육과 소통의 양식
대화의 무례함을 거르고 정제된 답변을 내놓는 LLM 도구가 일상화된 시대, 우리는 더 사려 깊은 대화를 하고 있는 것일까? 실시간 소통에서 오는 수많은 실패를 통해 다듬어져야 할 대화의 능력이 외부 도구에 의존하며 퇴화하고 있는 현상과, 그것이 가져올 사회적 불안 및 세대적 행동 양식의 변화를 고찰한다.
시니어 채용 시 유리한 연봉협상 시점과 전략
연봉협상은 단순히 숫자를 주고받는 과정이 아니라 심리적인 타이밍의 싸움이다. 사측의 입장에서 후보자가 계산적인 태도로 변하기 쉬운 최종 합격 이후보다, 채용 절차의 초기 단계부터 차근차근 협상을 진행하는 것이 왜 더 효율적이고 솔직한 자원 공유를 이끌어낼 수 있는지 분석한다.
토스트 예시 메세지