WeniVooks

검색

정규표현식 톺아보기 with JavaScript and Python

정규표현식과의 첫 만남

1. 정규표현식

1.1 연결 강의

해당 강의는 정규표현식 톺아보기강의에 기초합니다. 다만, 책이 먼저 업데이트가 되었기 때문에 영상은 추후 업데이트 예정입니다. 업데이트가 되면 이 텍스트를 수정하도록 하겠습니다.

1.2 정규표현식

이 책까지 검색해서 보실 정도라면 여러분은 서비스나 텍스트에서 특정 패턴을 찾거나, 데이터를 검증하거나, 텍스트를 변환해야 하는 상황을 자주 마주하셨을 것입니다. 예를 들어, 이메일 주소가 올바른 형식인지 확인하거나, 로그 파일에서 특정 에러 메시지를 찾거나, 전화번호 형식을 통일하는 작업 등입니다.

이러한 작업들을 일일이 수동으로 하거나 복잡한 조건문을 작성하는 것은 매우 비효율적이며 문제 해결을 복잡하게 만들기도 합니다. 정규표현식(Regular Expression, 줄여서 Regex)은 이런 문제를 해결하기 위한 강력한 도구입니다.

1.3 정규표현식이란?

정규표현식은 텍스트에서 특정한 패턴을 찾아내는 검색 패턴을 정의하는 형식 언어입니다. 정규표현식은 Python, JavaScript, Java 등 다양한 언어에서 사용 가능하며 원하는 패턴을 정확하게 찾아내고 필요한 형태로 변환할 수 있습니다.

💡 정규표현식의 주요 활용

  • 데이터 검증: 이메일 주소, 전화번호, 비밀번호 등의 형식 검사
  • 데이터 추출: 로그 파일에서 특정 정보 추출
  • 데이터 변환: 텍스트 형식 변환, 치환
  • 데이터 정제: 불필요한 문자 제거, 형식 통일화

2. 실습 환경 설정

2.1 실습 도구 소개

이 강의에서는 웹 기반 정규표현식 실습 환경인 regexr.com을 활용합니다. 별도의 소프트웨어 설치 없이 브라우저에서 직접 정규표현식을 실행해 볼 수 있어, 쉽게 정규표현식을 익힐 수 있습니다. 기본 정규표현식 문법은 Chapter01에서 다루고, 각 언어별 실습은 Chapter02부터 진행합니다. 아래 링크를 클릭하여 실습 환경을 열어주세요.

정규표현식 실습 공간
2.2 실습 환경 구성
2.2.1 RegExr 인터페이스

RegExr은 크게 세 부분으로 구성되어 있습니다.

  1. 정규표현식 치트시트, 나의 패턴 등을 볼 수 있은 창
  2. 정규표현식을 입력하는 곳
  3. 입력된 정규표현식을 설명하는 곳

여기서 2번에 정규표현식을 입력하는 곳에 보면 /로 감싸진 부분이 있는데, 이 부분이 정규표현식을 나타냅니다. /로 감싸진 부분을 정규표현식 패턴이라고 부릅니다. 그 뒤에 g, i, m 등의 플래그가 올 수 있습니다. 플래그 설정은 오른쪽 상단 flags에서 할 수 있습니다. 여기서 g는 global, i는 ignore case, m은 multiline을 의미합니다. 실습은 gm 플래그를 사용하여 진행하겠습니다.

2.2.2 샘플 텍스트 준비

실습을 위한 샘플 텍스트는 아래처럼 준비되어 있습니다. 혹시 다른 환경에서 실습을 할 경우 아래 텍스트를 복사하여 사용해주세요.

hello world
hello  world
hello, world
Hello World

hello world hello

hello
hallo
hollo
heallo
yellow

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567891011121314151617181920
aaabbcaaabbcabcabc
aaa bb c aaa bb c a b c a b c
aaa1bb2c3aaa4bb5c6

[123456]
123[456]789
abc[def]ghij

010-9091-5491
010-5043-2901
010-5050-40409
010-49492-3131
010 2913 3132
01019133829
064-721-3213
010.1913.3829


paul-korea@naver.com
paul@naver.com
leehojun@gmail.com
hojun.lee@gmail.com
test.test@go.go.go


https://github.com/LiveCoronaDetector/livecod
github.com/LiveCoronaDetector/livecod
https://github.com/LiveCoronaDetector

I never dreamed about success, I worked for it.
Do not be afraid to give up the good to go for the great.

hello (hello world) hello
hello \\hello world// hello
^^
:)

[(name, leehojun), (age, 10), (height, 180), (email, paul-lab@naver.com)]
{name : leehojun, age : 10, height : 180, email : paul-lab@naver.com}

가나다라마바사아자차카타파하
ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ
안녕_하세요
안녕-하세요
수사
수박
수상
동해 물과 백두산이 마르고 닳도록 하느님이 보호하사 우리나라 만세
hello world
hello  world
hello, world
Hello World

hello world hello

hello
hallo
hollo
heallo
yellow

Monday Tuesday Wednesday Thursday Friday Saturday Sunday

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567891011121314151617181920
aaabbcaaabbcabcabc
aaa bb c aaa bb c a b c a b c
aaa1bb2c3aaa4bb5c6

[123456]
123[456]789
abc[def]ghij

010-9091-5491
010-5043-2901
010-5050-40409
010-49492-3131
010 2913 3132
01019133829
064-721-3213
010.1913.3829


paul-korea@naver.com
paul@naver.com
leehojun@gmail.com
hojun.lee@gmail.com
test.test@go.go.go


https://github.com/LiveCoronaDetector/livecod
github.com/LiveCoronaDetector/livecod
https://github.com/LiveCoronaDetector

I never dreamed about success, I worked for it.
Do not be afraid to give up the good to go for the great.

hello (hello world) hello
hello \\hello world// hello
^^
:)

[(name, leehojun), (age, 10), (height, 180), (email, paul-lab@naver.com)]
{name : leehojun, age : 10, height : 180, email : paul-lab@naver.com}

가나다라마바사아자차카타파하
ㄱㄴㄷㄹㅁㅂㅅㅇㅈㅊㅋㅌㅍㅎ
안녕_하세요
안녕-하세요
수사
수박
수상
동해 물과 백두산이 마르고 닳도록 하느님이 보호하사 우리나라 만세

⚠️ 실습 시 주의사항

  • 정규표현식은 대소문자를 구분합니다.
  • 공백도 하나의 문자로 취급됩니다.
  • 메타 문자(.와 같은 특수 기호)를 일반 문자로 사용하려면 이스케이프(\)를 사용해야 합니다.

3. 첫 번째 정규표현식 작성하기

3.1 간단한 예제
// 단순 문자열 찾기
/hello/gm
 
// 대소문자 구분 없이 찾기
/hello/gim
 
// 줄의 시작에서 찾기
/^hello/gm
// 단순 문자열 찾기
/hello/gm
 
// 대소문자 구분 없이 찾기
/hello/gim
 
// 줄의 시작에서 찾기
/^hello/gm
1장 정규표현식 기초1.2 문자와 패턴의 이해