작성일자 : 2023-11-06
Ver 0.1.1
1. Intro
정규식 함수는 Tableau Desktop 및 Prep builder에서 지원하며, SQL에서도 (Oracle - 10g 부터) 지원을 한다.
낯설긴 하지만 알아두었을 때, Tablau에서 로직을 짤때나 쿼리문을 작성할 때에도 유용하게 사용할 수 있을 것 같아 정리를 해보았다.
정규식이란 프로그래밍에서 문자열을 다룰 때, 문자열의 일정한 패턴을 표현하는 일정의 형식 언어를 말한다. 보통 RegEx 또는 RegExp라고 쓴다.
2. 메타(Meta) 문자
다른 언어에서 연산자나 예약어로 사용되는 문자를 정규 표현식에서는 메타(Meta) 문자라고 부른다. 메타 문자로 된 자원을 찾아야하는 경우에는 다른 언어와 마찬가지로 앞에 역 슬래시 (\)를 붙여 escape 하면 된다.
\ ^ $ . | [ ] ( ) * + ? { }
표현식 | 의미 |
^x | 문자열의 시작을 표현하며, x 문자로 시작됨을 의미 |
x$ | 문자열의 종료를 표현하며, x 문자로 종료됨을 의미 |
.x | 임의의 한 문자의 자리수를 표현하며 문자열이 x로 끝난다는 것을 의미 |
x+ | 반복을 표현하며 x 문자가 한번 이상 반복됨을 의미 |
x? | 존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미 |
x* | 반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨을 의미 |
x|y | or 를 표현하며 x 또는 y 문자가 존재함을 의미 |
(x) | 그룹을 표현하며 x 를 그룹으로 처리함을 의미 |
(x)(y) | 그룹들의 집합을 표현하며, 앞에서부터 순서대로 번호를 부여하여 관리하고 x,y는 각 그룹의 데이터로 관리된다 |
(x)(?:y) | 그룹들의 집합에 대한 예외를 표현하며, 그룹 집합으로 관리되지 않음을 의미 |
x{n} | 반복을 표현하며 x 문자가 n 번 반복됨음 의미 |
x{n,} | 반복을 표현하며 x 문자가 n 번 이상 반복됨음 의미 |
x{n,m} | 반복을 표현하며 x 문자가 최소 n 번 이상, 최대 m 번 이하로 반복됨음 의미 |
3. 문자 집합과 특수 문자
찾고자 하는 문자열에 특정 문자 여럿이 포함되어 있을 경우에는 문자 집합을 사용하여 여러 문자를 동시에 찾을 수 있다.
표현식 | 의미 |
[xy] | 문자 선택을 표현하며, x와 y 중에 하나를 의미 |
[^xy] | not을 표현하며, x 및 y를 제외한 문자를 의미 |
[x-z] | range를 표현하며 x ~ z 사이의 문자를 의미 |
\^ | escape 를 표현하며, ^를 문자로 사용함을 의미 |
\b | word boundary 를 표현하며, 문자와 공백사이의 문자를 의미 |
\B | non word boundary 를 표현하며, 문자와 공백사이가 아닌 문자를 의미 |
\d | digit 를 표현하며, 숫자를 의미 |
\D | non digit 을 표현하며, 숫자가 아닌 것을 의미 |
\n | 개행 문자를 의미 |
\s | space 를 표현하며, 공백 문자를 의미 |
\S | non space 를 표현하며, 공백 문자가 아닌 것을 의미 |
\t | tab 을 표현하며, 탭 문자를 의미 |
\v | vertical tab 을 표현하며, 수직 탭 문자를 의미 |
\w | word 를 표현하며, 알파벳 + 숫자 + _ 중 한 문자임을 의미 |
\W | non word를 표현 하며, 알파벳 + 숫자 + _ 중 한 문자임을 의미 |
\x | 16진수 값을 의미 |
\0 | 8진수 값을 의미 |
4. Flag
정규식을 사용할 때, Flag 라는 것이 존재하는데, Flag를 사용하지 않으면 문자열에 대해서 검색을 한번만 처리하고 종료하게 된다. 이에 상황에 맞게 Flag를 사용할 수 있는데, 아래와 같은 Flag가 존재한다.
Flag | 의미 |
g | Global 의 의미로, 대상 문자열 내에 모든 패턴들을 검색하는 것을 의미 |
i | Ignore case 의 의미로, 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미 |
m | Multi line 의 의미로, 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미 |
참고 사이트 : https://hamait.tistory.com/342