REGEX

Intro

문자열 데이터의 전처리 시에 많이 사용되는 기술로 대게 문자열에서 특정 pattern을 추출하거나 검색, 필터링할 때 많이 사용되어진다.

regex

Regular Expression의 약자로 한국어로 정규표현식이라고 부른다. 대게 모든 언어에서 이를 이용할 수 있는 라이브러리를 제공하거나 기본으로 포함하고 있기 때문에 이를 이해하는 것은 문자열을 다루는 능력치를 한 층 더 끌어올려준다.

우선 기본적으로 모든 character를 이용해서 pattern으로 생성할 수 있다. 하지만, 이것만으로는 복잡한 기능을 수행하는데 부족하다. 따라서, 특별한 character를 활용하여 이를 수행할 수 있다.

Special Character

기본적으로 특수 문자는 regex에서 표현할 때, \를 이용해서 구분해주어야 한다. 하지만, 이를 사용하지 않고 바로 사용할 경우에는 대게 특별한 의미를 갖는 경우가 많다. 반대로, 일반 문자의 경우에는 \에 영어 character를 더하는 경우 특별한 의미를 갖는 경우가 있다. 하지만, 핵심적인 기능은 아래 문자들이다.

CharacterMeanExample. patternExample. matched string
?이전 문자가 있는 경우와 없는 경우를 모두 포함한다.colou?rcolor colour
+이전 문자가 하나 이상 있는 경우를 모두 포함한다.o+hoh ooh ooooooooh
*이전 문자가 0개 이상 존재하는 경우를 모두 포함한다.oo*hoh ooh oooooooh
.모든 문자라는 의미를 갖는다.beg.nbegin begun begUn
^문자열의 시작 부분을 특정 짓는다.^aaaaaa alto
$문자열의 끝 부분을 특정 짓는다.a$aaaaa sea
||를 좌우로 있는 두 word를 모두 포함한다.hello|worldhello world hello,world

Square Bracket

또한, square bracket([])이 가지는 기능이 다양하다. 이 내부에 있는 모든 문자를 하나의 문자로 취급한다는 것이 특징이며, 앞에서 살펴본 |의 확장 버전이라고 볼 수 있겠다. 또한, 이 안에서는 일부 특수 기호가 또 다른 의미를 가지게 된다.

CharacterMeanExample. patternExample. matched string
[][]내부에 있는 모든 문자를 포함하는 글자가 하나라도 있는지를 확인[wW]oodwood Wood
[a-z]alphabet의 대소문자와 숫자에만 제한된 기능으로, 그 사이의 모든 문자를 포함한다는 의미를 내포한다.[a-zA-Z0-9]+1234 hello Hel10 HellHappy
[^]^ 이후로 오는 문자를 포함하지 않는지 확인^[^a-z]A a 1234

더 많은 기능 예를 들면, Grouping이라는 기능도 존재하지만 위의 내용만 숙지해도 문자열 처리의 기본은 가능하다.

사실 이것만으로는 내용이 부족할 수 있는데 playground 및 regex 용법에 대한 설명이 잘 정리된 사이트를 해당 사이트를 참고하기 바란다. 🔗 Regexr

Reference

Comments