본문 바로가기
Python/기초

정규 표현식이란? 개념과 공부 방법에 대해 알려 드립니다.

by 모두의 케빈 2023. 7. 14.

정규 표현식의 정의


문자열의 규칙을 찾아서

 

정규 표현식(Regular Expression)이란 특정한 규칙을 가진 문자열의 집합을 다루는 데 사용하는 형식 언어입니다. 다양한 프로그래밍 언어에서 문자열의 검색과 치환을 위해 정규 표현식을 지원합니다. (미국의 수학자 스티븐 클레이니가 정규 표현식의 개념을 설립했습니다.)

 

정규 표현식은 왜 알아야 할까요. 텍스트를 활용하여 부가 가치를 창출하기 위해서입니다. 우리는 일상생활에서 방대한 양의 텍스트 데이터를 생산하고 이를 활용하여 부가 가치를 창출합니다. 인공 지능(자연어 처리)되기도 하고요. 크롤링(Html)에 활용되기도 합니다.

이때, 텍스트 데이터를 효과적으로 활용하기 위해서는 필요한 텍스트와 불필요한 텍스트를 구분해야 하는데요. 컴퓨터 입장에서는 모든 문자가 동일하기 때문에, 사람이 '이러한 형식, 규칙을 가진 텍스트만을 골라줘!'라고 명령을 내려줘야 합니다.

텍스트의 규칙. 모든 텍스트에는 규칙이 있습니다. 한국에서 전화번호는 '010-1234-5678' 또는 01012345678의 규칙을 따릅니다. 주민등록번호는 123456-7891234의 형식으로 고정되어 있습니다. 규칙이 없다면, 프로그래머가 원하는 텍스트를 선별하도록 스스로 규칙을 만들 수도 있습니다.

이런 텍스트의 규칙을 이용하여 프로그램에게 명령을 내립니다.

"3자리 숫자와 하이픈(-), 4자리 숫자와 하이픈(-), 그리고 4자리 숫자로 끝나는 문자열을 찾아줘!" (전화번호 찾기)

"6자리 숫자와 하이픈(-), 그리고 7자리 숫자로 끝나는 문자열을 찾아줘!"  (주민등록번호 찾기)

 

이처럼 텍스트의 규칙을 활용하여 컴퓨터에게 프로그래머가 원하는 문자의 집합을 찾게 하는 것이 바로 정규 표현식의 존재 이유입니다. 정규 표현식은 진입 장벽이 높고 다루기 어려운 문법입니다. 그러나 능숙하게 다룰 수 있다면, 엄청난 무기가 될 수 있습니다. 

 

 

메타 문자와 정규 문자


메타 문자를 잘 다룰 수 있다면 당신은 정규 표현식의 마스터

 

정규 표현식의 모든 문자는 메타 문자정규 문자의 두 가지로 분류됩니다. 

메타 문자는 약속된 용법으로 사용되는 문자입니다. 예를 들면, 메타 문자 중 하나인 물음표(?)는 '앞의 문자가 있어도 되고 없어도 된다.'라는 의미를 담고 있습니다. 정규 문자는 약속된 의미 없이 문자 그대로 사용되는, 말 그대로 문자를 의미합니다. 예를 들면 정규 문자 'a'는 단어 'a' 하나에 매치됩니다.

정규 표현식의 핵심은 메타 문자를 얼마나 잘 활용하는지입니다. 이를 위해서는 철저한 연습이 필요합니다. 우선 위키 백과에 잘 정리된 메타 문자 표가 있어서 해당 표에 자주 사용되는 내용을 추가하여 아래 정리해 두었습니다. 자세한 활용은 다음 글부터 다룰 예정이므로, 이번 글에서는 가볍게 읽고 넘어가주세요.

메타 문자 기능 표 (출처: 정규 표현식 - 위키백과, 우리 모두의 백과사전 (wikipedia.org))

메타 문자
설명
. 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다.
[ ] "["과 "]" 사이의 문자 중 "하나"를 선택한다. "-" 기호와 함께 쓰면 범위를 지정할 수 있다. 
[^ ] 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 
^ 문자열이나 행의 처음을 의미한다.
$ 문자열이나 행의 끝을 의미한다.
( ) 여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다.
\n 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9 중 하나가 올 수 있다.
* 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다.
{m, n} "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다.
 a | b a 또는 b (Matches a or b)
 + 문자가 최소 1번 이상 반
 ? 문자가 0 또는 1회

 

역슬래시(\) 메타 문자를 활용한 확장 기능

\문자 의미 설명
\w 문자/숫자 문자 또는 숫자와 매치
\W 문자/숫자  부정 문자와 숫자가 아닌 특수 문자와 매치
\d 숫자 0부터 9까지의 숫자와 매치. [0-9]와 동일한 표현.
\D 숫자 부정 숫자가 아닌 것(문자와 특수 문자)과 매치
\s whitespace 공백, 띄어쓰기(whitespace)와 매치
\S whitespace 부정 whitespace가 아닌 문자와 매치

 

 

 

정규 표현식은 어떻게 공부하나요?


 

저 같은 경우에는 메타 문자 표를 모니터 한쪽에 띄워 두고 연습 문제를 풀며 그 개념을 익혔습니다. 처음에 독학하며 고생을 많이 해서 문제 풀이 내용을 글로 정리해드리고자 합니다. 다음 글을 기대해 주세요.

 

참고로 아래는 정규 표현식을 공부하기 좋은  사이트입니다.

1. 정규 표현식을 연습하기 좋은 사이트

RegExr: Learn, Build, & Test RegEx

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

 

2. 정규 표현식의 연습 문제를 풀 수 있는 사이트

RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs

 

RegexOne - Learn Regular Expressions - Lesson 1: An Introduction, and the ABCs

Regular expressions are extremely useful in extracting information from text such as code, log files, spreadsheets, or even documents. And while there is a lot of theory behind formal languages, the following lessons and examples will explore the more prac

regexone.com

 

 

댓글