안녕하세요 오랜만에 포스팅을 올립니다. 오늘 소개해드릴 사이트는 바로 정규표현식을 테스트할 수 있는 사이트입니다. 바로 Regex101 입니다. 정규 표현식이라는 문구는 일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해 특정한 표준의 텍스트 신택스를 의미하기 위해 사용되어진다고 합니다.
정규표현식 기본 개념
해당 사이트 주소는 regex101.com/
이고 해당 사이트에서 영어로된 설명을 오른쪽 하단에서도 확인 할 수 있다.
몇가지 설명을 돕기위해서 아래의 기본적인 설명을 나무위키를 통해서 가지고 왔습니다.
? | 물음표는 0번 또는 1차례까지의 발생을 의미한다. 이를테면 colou?r는 "color"와 "colour"를 둘 다 일치시킨다. |
* | 별표는 0번 이상의 발생을 의미한다. 이를테면 ab*c는 "ac", "abc", "abbc", "abbbc" 등을 일치시킨다. |
+ | 덧셈 기호는 1번 이상의 발생을 의미한다. 이를테면 ab+c는 "abc", "abbc", "abbbc" 등을 일치시키지만 "ac"는 일치시키지 않는다. |
{n} | 정확히 n 번만큼 일치시킨다. |
{min,} | "min"번 이상만큼 일치시킨다. |
{min,max} | 적어도 "min"번만큼 일치시키지만 "max"번을 초과하여 일치시키지는 않는다. |
메타문자기능설명
. | 문자 | 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다. |
[ ] | 문자 클래스 | "["과 "]" 사이의 문자 중 하나를 선택한다. "¦"를 여러 개 쓴 것과 같은 의미이다. 예를 들면 [abc]d는 ad, bd, cd를 뜻한다. 또한, "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나, "[1-9]"는 1부터 9까지 중의 하나를 의미한다. |
[^ ] | 부정 | 문자 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다. |
^ | 처음 | 문자열이나 행의 처음을 의미한다. |
$ | 끝 | 문자열이나 행의 끝을 의미한다. |
( ) | 하위식 | 여러 식을 하나로 묶을 수 있다. "abc¦adc"와 "a(b¦d)c"는 같은 의미를 가진다. |
\n | 일치하는 n번째 패턴 | 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9 중 하나가 올 수 있다. |
* | 0회 이상 | 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다. |
{m, n} | m회 이상 n회 이하 | "a{1,3}b"는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다. |
POSIX 확장 문법
? | 0 또는 1회 | "a?b"는 "b", "ab"를 포함한다. |
+ | 1회 이상 | "a+b"는 "ab", "aab", "aaab"를 포함하지만 "b"는 포함하지 않는다. |
¦ | 선택 | 여러 식 중에서 하나를 선택한다. 예를 들어, "abc¦adc"는 abc와 adc 문자열을 모두 포함한다. |
문자 클래스
문자 클래스는 문자열 일치 다음으로 가장 기본적인 정규 표현식 개념입니다.. 이는 하나의 작은 일련의 문자열들을 더 큰 집합의 문자열들과 일치시키도록 합니다. 이를테면, [A-Z]는 알파벳을 대표하며 \d는 임의의 숫자를 의미한다고 할 수 있습니다.
정규표현식을 잘 사용한다면 데이터 수집, 데이터 정제과정에서 큰 도움이 될것입니다. (ETL작업) 혹은 특정 문자열을 추출하는 작업을 할때 주로 사용되어 집니다. 단순 찾기, 바꾸기 기능보다 잘쓴다면 훨신 빠르게 작업을 수행할 수 있습니다.