문자열 분할을 위한 함수
아래 문서 내용은 system.functions 시스템 테이블을 기반으로 자동 생성되었습니다.
alphaTokens
도입된 버전: v1.1
a-z 및 A-Z 범위에 속하는 연속 바이트로 이루어진 부분 문자열을 선택하고, 선택된 부분 문자열로 구성된 배열을 반환합니다.
구문
별칭: splitByAlpha
인수
s— 분할할 문자열입니다.Stringmax_substrings— 선택적 인수입니다.max_substrings > 0인 경우 반환되는 부분 문자열의 개수는 최대max_substrings개이며, 그렇지 않으면 함수는 가능한 한 많은 부분 문자열을 반환합니다.Int64
반환 값
s에서 선택된 부분 문자열의 배열을 반환합니다. Array(String)
예시
사용 예시
arrayStringConcat
도입 버전: v1.1
배열에 나열된 값들의 문자열 표현을 구분자(separator)를 사이에 두고 연결합니다. 구분자는 선택적 매개변수이며, 지정하지 않을 경우 기본값은 빈 문자열입니다.
구문
인수
arr— 연결할 배열입니다.Array(T)separator— 선택적 구분자 문자열입니다. 기본값은 빈 문자열입니다.const String
반환 값
연결된 문자열을 반환합니다. String
예시
사용 예시
extractAllGroupsVertical
도입 버전: v20.5
정규 표현식을 사용하여 문자열의 모든 그룹에 대한 일치 항목을 찾고, 배열들의 배열을 반환합니다. 각 내부 배열에는 입력 문자열에서 나타나는 순서대로 각 그룹에서 일치한 조각들이 포함됩니다.
구문
별칭: extractAllGroups
인수
s— 추출할 입력 문자열입니다.String또는FixedStringregexp— 매칭할 정규식입니다.const String또는const FixedString
반환 값
각 내부 배열이 하나의 일치 결과에서 캡처된 그룹들을 포함하도록, 배열의 배열을 반환합니다. 각 일치 결과는 정규식의 캡처 그룹(그룹 1, 그룹 2 등)에 대응하는 요소들로 이루어진 배열을 생성합니다. 일치하는 항목이 없으면 빈 배열을 반환합니다. Array(Array(String))
예시
사용 예시
ngrams
도입 버전: v21.11
UTF-8 문자열을 길이가 N인 n-그램으로 분할합니다.
구문
인자
s— 입력 문자열.String또는FixedStringN— n-그램의 길이.const UInt8/16/32/64
반환 값
n-그램 배열을 반환합니다. Array(String)
예시
사용 예시
reverseBySeparator
도입 버전: v26.2
지정한 구분자로 구분된 문자열에서 부분 문자열의 순서를 뒤집습니다. 이 함수는 문자열을 구분자로 분리한 다음, 생성된 파트의 순서를 뒤집고, 같은 구분자를 사용하여 다시 결합합니다. 도메인 이름, 파일 경로, 또는 구성 요소의 순서를 반대로 해야 하는 계층적 데이터를 파싱할 때 유용합니다.
예시:
- reverseBySeparator('www.google.com')은(는) 'com.google.www'를 반환합니다.
- reverseBySeparator('a/b/c', '/')은(는) 'c/b/a'를 반환합니다.
- reverseBySeparator('x::y::z', '::')은(는) 'z::y::x'를 반환합니다.
문법
인수
string— 파트의 순서를 역순으로 만들 입력 문자열입니다.Stringseparator— 파트를 식별하는 데 사용하는 구분자 문자열입니다. 제공하지 않으면 기본값으로 '.'(점)을 사용합니다. 기본값: '.'String
반환 값
원본 문자열의 부분 문자열을 오른쪽에서 왼쪽 순서가 되도록 재배열한 뒤, 동일한 구분자로 연결한 문자열을 반환합니다. String
예시
기본 도메인 역순 변환
경로 역순
사용자 정의 구분자
마침표가 포함된 엣지 케이스
단일 요소
빈 구분자
splitByChar
도입 버전: v1.1
정확히 한 글자인 상수 문자열 separator로 구분된 문자열을 부분 문자열 배열로 분할합니다.
문자열의 시작이나 끝에 separator가 나타나거나, 여러 개의 separator가 연속해서 나타나는 경우에는 빈 부분 문자열도 선택될 수 있습니다.
splitby_max_substrings_includes_remaining_string 설정(기본값: 0)은 인자 max_substrings > 0인 경우 결과 배열의 마지막 요소에 남은 문자열을 포함할지 여부를 제어합니다.
다음과 같은 경우 빈 부분 문자열이 선택될 수 있습니다:
- 문자열의 시작이나 끝에
separator가 나타나는 경우 - 여러 개의
separator가 연속해서 나타나는 경우 - 원래 문자열
s가 비어 있는 경우
문법
인수
separator— 구분자는 1바이트 문자여야 합니다.Strings— 분할할 문자열입니다.Stringmax_substrings— 선택 사항입니다.max_substrings > 0이면 반환되는 배열에는 최대max_substrings개의 부분 문자열만 포함하며, 그렇지 않으면 FUNCTION은 가능한 한 많은 부분 문자열을 반환합니다. 기본값은0입니다.Int64
반환 값
선택된 부분 문자열들의 배열을 반환합니다. Array(String)
예시
사용 예시
splitByNonAlpha
도입 버전: v21.9
공백 및 문장 부호 문자를 기준으로 문자열을 부분 문자열 배열로 분할합니다.
인자 max_substrings > 0인 경우 결과 배열의 마지막 요소에 남은 문자열을 포함할지 여부는 splitby_max_substrings_includes_remaining_string 설정(기본값: 0)으로 제어됩니다.
구문
인자
s— 분할할 문자열입니다.Stringmax_substrings— 선택 사항입니다.max_substrings > 0인 경우 반환되는 부분 문자열의 개수는max_substrings를 넘지 않으며, 그렇지 않은 경우 가능한 한 많은 부분 문자열을 반환합니다. 기본값:0.Int64
반환 값
s에서 선택된 부분 문자열의 배열을 반환합니다. Array(String)
예시
사용 예시
splitByRegexp
도입 버전: v21.6
제공된 정규식을 구분자로 사용하여 문자열을 부분 문자열의 배열로 분할합니다. 제공된 정규식이 비어 있으면 문자열을 한 글자씩의 문자 배열로 분할합니다. 정규식과 일치하는 부분이 없으면 문자열은 분할되지 않습니다.
다음과 같은 경우 빈 부분 문자열이 생성될 수 있습니다.
- 비어 있지 않은 정규식이 문자열의 시작 또는 끝에서 일치하는 경우
- 비어 있지 않은 정규식 일치가 연속해서 여러 번 발생하는 경우
- 원래 문자열은 비어 있고 정규식은 비어 있지 않은 경우
splitby_max_substrings_includes_remaining_string 설정(기본값: 0)은 인자 max_substrings > 0인 경우 결과 배열의 마지막 요소에 남은 문자열을 포함할지 여부를 제어합니다.
구문
인수
regexp— 정규식(regular expression). 상수입니다.String또는FixedStrings— 분할할 문자열입니다.Stringmax_substrings— 선택적 인수입니다.max_substrings > 0인 경우 반환되는 부분 문자열 개수는 최대max_substrings개이며, 그렇지 않으면 가능한 한 많은 부분 문자열을 반환합니다. 기본값:0.Int64
반환 값
s에서 선택된 부분 문자열로 이루어진 배열을 반환합니다. Array(String)
예시
사용 예시
빈 정규식
splitByString
도입 버전: v1.1
여러 문자로 구성된 상수 separator로 문자열을 분할하여 부분 문자열 배열을 생성합니다.
문자열 separator가 비어 있으면 문자열 s를 한 글자씩의 문자 배열로 분할합니다.
다음과 같은 경우 빈 부분 문자열이 생성될 수 있습니다:
- 비어 있지 않은 separator가 문자열의 시작 또는 끝에 나타나는 경우
- 비어 있지 않은 separator가 여러 개 연속으로 나타나는 경우
- separator는 비어 있지 않은데 원래 문자열
s가 비어 있는 경우
splitby_max_substrings_includes_remaining_string (기본값: 0) 설정은 인자 max_substrings > 0인 경우 결과 배열의 마지막 요소에 남은 문자열을 포함할지 여부를 제어합니다.
구문
인수
separator— 구분자입니다.Strings— 분할할 문자열입니다.Stringmax_substrings— 선택적 인수입니다.max_substrings > 0인 경우 반환되는 부분 문자열의 개수는max_substrings를 넘지 않으며, 그렇지 않은 경우 함수는 가능한 한 많은 부분 문자열을 반환합니다. 기본값:0.Int64
반환 값
문자열 s에서 선택된 부분 문자열의 배열을 반환합니다. Array(String)
예시
사용 예시
구분자가 비어 있는 경우
splitByWhitespace
도입된 버전: v21.9
공백 문자로 구분된 문자열을 하위 문자열 배열로 분할합니다.
설정 splitby_max_substrings_includes_remaining_string (기본값: 0)은 인수 max_substrings > 0일 때 결과 배열의 마지막 요소에 남은 문자열을 포함할지 여부를 제어합니다.
구문
인자
s— 분할할 문자열입니다.Stringmax_substrings— 선택적인 인자입니다.max_substrings > 0이면 반환되는 부분 문자열의 개수는max_substrings를 넘지 않으며, 그렇지 않으면 함수는 가능한 한 많은 부분 문자열을 반환합니다. 기본값은0입니다.Int64
반환 값
s에서 선택된 부분 문자열의 배열을 반환합니다. Array(String)
예시
사용 예시
tokens
도입된 버전: v21.11
지정된 tokenizer를 사용하여 문자열을 토큰으로 분할합니다.
사용 가능한 tokenizer:
splitByNonAlpha는 영숫자가 아닌 ASCII 문자를 기준으로 문자열을 분할합니다(함수 splitByNonAlpha도 참조).splitByString(S)는 사용자 정의 구분 문자열S를 기준으로 문자열을 분할합니다(함수 splitByString도 참조). 구분자는 선택적 매개변수로 지정할 수 있으며, 예를 들어tokenizer = splitByString([', ', '; ', '\n', '\\'])와 같이 설정합니다. 각 문자열은 여러 문자로 구성될 수 있습니다(예시의', '). 구분자를 명시적으로 지정하지 않으면(예:tokenizer = splitByString) 기본 구분자 목록은 공백 하나[' ']입니다.ngrams(N)는 문자열을 동일한 크기의N-gram으로 분할합니다(함수 ngrams도 참조). n-gram 길이는 1에서 8 사이의 정수인 선택적 매개변수로 지정할 수 있으며, 예를 들어tokenizer = ngrams(3)와 같이 설정합니다. n-gram 크기를 명시적으로 지정하지 않으면(예:tokenizer = ngrams) 기본값은 3입니다.sparseGrams(min_length, max_length, min_cutoff_length)는 최소min_length, 최대max_length(포함) 길이의 가변 길이 n-gram으로 문자열을 분할합니다(함수 sparseGrams도 참조). 별도 지정하지 않으면min_length와max_length의 기본값은 각각 3과 100입니다. 매개변수min_cutoff_length를 지정하면 길이가min_cutoff_length이상인 n-gram만 반환합니다.ngrams(N)과 비교하면,sparseGramstokenizer는 가변 길이 N-gram을 생성하여 원본 텍스트를 더 유연하게 표현할 수 있습니다. 예를 들어tokenizer = sparseGrams(3, 5, 4)는 내부적으로 입력 문자열에서 3-, 4-, 5-gram을 생성하지만, 4-gram과 5-gram만 반환합니다.array는 토큰화를 수행하지 않으며, 각 행 값이 하나의 토큰이 됩니다(함수 array도 참조).
splitByString tokenizer의 경우, 토큰이 prefix code를 형성하지 않는다면 더 긴 구분자를 우선적으로 매칭하도록 하는 것이 바람직합니다.
이를 위해 구분자를 길이가 긴 순서대로 전달하면 됩니다.
예를 들어 separators = ['%21', '%']인 경우 문자열 %21abc는 ['abc']로 토큰화되지만, separators = ['%', '%21']인 경우 ['21ac']로 토큰화됩니다(이는 원했던 결과가 아닐 가능성이 높습니다).
Syntax
인수
value— 입력 문자열입니다.String또는FixedStringtokenizer— 사용할 tokenizer입니다. 유효한 인수는splitByNonAlpha,ngrams,splitByString,array,sparseGrams입니다. 선택적 인수이며, 명시적으로 지정하지 않으면 기본값은splitByNonAlpha입니다.const Stringn— 인수tokenizer가ngrams인 경우에만 해당합니다. n-gram의 길이를 정의하는 선택적 매개변수입니다. 명시적으로 지정하지 않으면 기본값은3입니다.const UInt8separators— 인수tokenizer가split인 경우에만 해당합니다. 구분자 문자열을 정의하는 선택적 매개변수입니다. 명시적으로 지정하지 않으면 기본값은[' ']입니다.const Array(String)min_length— 인수tokenizer가sparseGrams인 경우에만 해당합니다. 최소 gram 길이를 정의하는 선택적 매개변수이며, 기본값은 3입니다.const UInt8max_length— 인수tokenizer가sparseGrams인 경우에만 해당합니다. 최대 gram 길이를 정의하는 선택적 매개변수이며, 기본값은 100입니다.const UInt8min_cutoff_length— 인수tokenizer가sparseGrams인 경우에만 해당합니다. 최소 cutoff 길이를 정의하는 선택적 매개변수입니다.const UInt8
Returned value
입력 문자열에서 생성된 토큰 배열을 반환합니다. Array
Examples
기본 tokenizer
N그램 토크나이저