regex ==================================================================================================== 개요 ---------------------------------------------------------------------------------------------------- 이 명령어는 대상 컬럼의 값에서 지정한 정규식과 일치하는 결과를 추출할 때 사용됩니다. 타입 ---------------------------------------------------------------------------------------------------- TEXT 설명 ---------------------------------------------------------------------------------------------------- 대상 컬럼에 regex 명령을 사용하여 지정된 정규식과 일치하는 결과를 추출하여 새로운 컬럼(default : regex_컬럼)으로 만듭니다. 검색에서 정규식을 사용할 때는 파이프 `|` 및 백슬래시 `\\` 와 같은 문자를 사용할 수 있습니다. 파이프 `|` 는 or를 의미합니다. 백슬래시 `\\` 는 정규식에서 대중적으로 쓰이는 문자입니다. Expression에 대한 내용은 다음 사이트를 참고합니다. Regular_expression : https://en.wikipedia.org/wiki/Regular_expression Parameters ---------------------------------------------------------------------------------------------------- .. code-block:: none ... | regex EXPR GROUP ... | regex FIELD = EXPR GROUP ... | regex FIELD = EXPR GROUP, (FIELD = EXPR GROUP)* .. list-table:: :header-rows: 1 * - 이름 - 설명 - 필수/옵션 * - ``FIELD`` - 대상 필드를 의미합니다. - 옵션 * - ``=`` - 대상 필드와 정규식을 매칭 시킵니다. - 옵션 * - ``EXPR`` - 정규식을 의미합니다. - 필수 * - ``GROUP`` - 괄호가 있는 정규식안의 문자열 그룹 중에서 순서에 해당하는 그룹을 선택합니다. 예) ``group(1)`` 는 괄호가 있는 정규식 그룹들중 첫번째 그룹에 매칭되는 문자열 - 옵션 Example ---------- - 예제용 데이터 모양 입니다. .. list-table:: :header-rows: 1 * - A - B - C - D * - 일반 - 1 - 10.123 - ab * - 특수 - 2 - 20.123 - ab * - 일반 - 3 - 30.123 - ef * - 특수 - 4 - 40.123 - gh * - 옵션 - 5 - 50.123 - ij - B 필드를 정규식 '[1-2]'로 제한한 결과를 출력합니다. > 1~2 사이의 숫자로 이루어진 string을 찾습니다. .. code-block:: none ... | regex B='[1-2]' .. list-table:: :header-rows: 1 * - A - B - C - D - regex_B * - 일반 - 1 - 10.123 - ab - 1 * - 특수 - 2 - 20.123 - ab - 2 * - 일반 - 3 - 30.123 - ef - * - 특수 - 4 - 40.123 - gh - * - 옵션 - 5 - 50.123 - ij - - B 필드를 정규식 '[1-4]', A 필드를 정규식 '일반'으로 제한한 결과를 출력합니다. .. code-block:: none ... | regex B='[1-4]', A='일반' .. list-table:: :header-rows: 1 * - A - B - C - D - regex_B - regex_A * - 일반 - 1 - 10.123 - ab - 1 - 일반 * - 특수 - 2 - 20.123 - ab - 2 - * - 일반 - 3 - 30.123 - ef - 3 - 일반 * - 특수 - 4 - 40.123 - gh - 4 - * - 옵션 - 5 - 50.123 - ij - - - 모든 필드를 정규식 '([0-9]+[.]?[1-9]*|[a-g]+|(특수)+)'으로 제한한 결과를 출력합니다. .. code-block:: none ... | regex '([0-9]+[.]?[1-9]*|[a-g]+|(특수)+)' .. list-table:: :header-rows: 1 * - A - B - C - D - regex_A - regex_B - regex_C - regex_D * - 일반 - 1 - 10.123 - ab - - 1 - 10.123 - ab * - 특수 - 2 - 20.123 - ab - 특수 - 2 - 20.123 - ab * - 일반 - 3 - 30.123 - ef - - 3 - 30.123 - ef * - 특수 - 4 - 40.123 - gh - 특수 - 4 - 40.123 - g * - 옵션 - 5 - 50.123 - ij - - 5 - 50.123 - - 모든 필드를 정규식 '[^\s]'으로 제한한 결과를 출력합니다. .. code-block:: none ... | regex '[^\s]' .. list-table:: :header-rows: 1 * - A - B - C - D - regex_A - regex_B - regex_C - regex_D * - 일반 - 1 - 10.123 - ab - 일반 - 1 - 10.123 - ab * - 특수 - 2 - 20.123 - ab - 특수 - 2 - 20.123 - ab * - 일반 - 3 - 30.123 - ef - 일반 - 3 - 30.123 - ef * - 특수 - 4 - 40.123 - gh - 특수 - 4 - 40.123 - gh * - 옵션 - 5 - 50.123 - ij - 옵션 - 5 - 50.123 - ij - 2 번째 예제용 데이터 모양 입니다. .. list-table:: :header-rows: 1 * - json_col * - {"colA": 123, "colB": "abccc"} * - {"colA": 12.3, "colB": "abbbc"} * - {"colA": 33, "colB": "aaabc"} - 30.123 - 모든 필드에 정규식 '"colA":\s(\d+)\,.*' 을 적용하고, 그중 ()괄호로 그룹화 한 결과만을 추출하여 regex_컬럼 으로 생성합니다.. .. code-block:: none ... | regex '"colA":\s(\d+)\,.*' group(1) .. list-table:: :header-rows: 1 * - json_col - regex_json_col * - {"colA": 123, "colB": "abccc"} - 123 * - {"colA": 12.3, "colB": "abbbc"} - * - {"colA": 33, "colB": "aaabc"} - 33