文字列分割関数
以下のドキュメントは system.functions システムテーブルから生成されています。
alphaTokens
導入: v1.1
a-z および A-Z の範囲に含まれるバイトのみから成る連続部分文字列を抽出し、それらを配列として返します。
構文
エイリアス: splitByAlpha
引数
s— 分割する文字列。Stringmax_substrings— 省略可能。max_substrings > 0の場合、返される部分文字列の数はmax_substringsを超えません。0 以下の場合、この関数は可能な限り多くの部分文字列を返します。Int64
戻り値
s から取得された部分文字列の配列を返します。Array(String)
例
使用例
arrayStringConcat
導入バージョン: v1.1
配列内に列挙された値の文字列表現を、指定されたセパレーターで連結します。セパレーターは省略可能な引数で、省略時の既定値は空文字列です。
構文
引数
arr— 連結する配列。Array(T)separator— 省略可。区切り文字列。デフォルトは空文字列。const String
戻り値
連結結果の文字列を返します。String
例
使用例
extractAllGroupsVertical
導入バージョン: v20.5
正規表現を使用して文字列内のすべてのグループにマッチさせ、配列の配列を返します。各配列には、入力文字列に現れる順序で、各グループからマッチした部分文字列が含まれます。
構文
別名: extractAllGroups
引数
s— 抽出元の入力文字列。StringまたはFixedStringregexp— マッチに使用する正規表現。const Stringまたはconst FixedString
戻り値
配列の配列を返します。各内側の配列には、1 回のマッチで取得されたキャプチャグループが含まれます。各マッチは、正規表現内のキャプチャグループ(グループ 1、グループ 2 など)に対応する要素を持つ配列を生成します。マッチが見つからない場合は空配列を返します。Array(Array(String))
例
使用例
ngrams
導入バージョン: v21.11
UTF-8 エンコードされた文字列を、長さ N の n-gram に分割します。
構文
引数
s— 入力文字列。StringまたはFixedStringN— N-gram の長さ。const UInt8/16/32/64
戻り値
N-gram の配列を返します。Array(String)
例
使用例
splitByChar
導入バージョン: v1.1
指定された、長さがちょうど 1 文字の定数文字列 separator で区切られた文字列を分割し、部分文字列の配列を返します。
セパレーターが文字列の先頭または末尾に現れる場合、または連続して複数のセパレーターが現れる場合には、空の部分文字列が生成されることがあります。
splitby_max_substrings_includes_remaining_string(デフォルト: 0)は、引数 max_substrings > 0 のときに、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
空の部分文字列が生成される場合:
- 文字列の先頭または末尾にセパレーターが現れる場合
- 複数のセパレーターが連続して現れる場合
- 元の文字列
sが空である場合
構文
引数
separator— セパレータは 1 バイトの文字である必要があります。Strings— 分割対象の文字列。Stringmax_substrings— 省略可能。max_substrings > 0の場合、返される配列には最大でmax_substrings個の部分文字列が含まれます。0 以下の場合は、可能な限り多くの部分文字列を返します。デフォルト値は0です。Int64
戻り値
抽出された部分文字列の配列を返します。 Array(String)
例
使用例
splitByNonAlpha
導入バージョン: 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)
例
使用例
splitByRegexp
導入バージョン: v21.6
指定した正規表現で文字列を分割し、部分文字列の配列を返します。 指定した正規表現が空文字列の場合、元の文字列は 1 文字ごとの配列に分割されます。 正規表現に 1 つもマッチしない場合、文字列は分割されません。
空の部分文字列が返される場合:
- 非空の正規表現が文字列の先頭または末尾にマッチした場合
- 非空の正規表現のマッチが連続して複数存在する場合
- 正規表現が空でなく、元の文字列が空文字列である場合。
splitby_max_substrings_includes_remaining_string(デフォルト値: 0)は、引数 max_substrings > 0 の場合に、残りの文字列を結果配列の最後の要素に含めるかどうかを制御します。
構文
引数
regexp— 正規表現。定数値。StringまたはFixedStrings— 分割対象の文字列。Stringmax_substrings— 省略可能。max_substrings > 0の場合、返される部分文字列の数は最大でmax_substrings個となり、それ以外の場合は可能な限り多くの部分文字列を返します。デフォルト値:0。Int64
戻り値
s から抽出された部分文字列の配列を返します。Array(String)
例
使用例
空の正規表現
splitByString
導入バージョン: v1.1
複数文字からなる定数の separator で文字列を分割し、部分文字列の配列を返します。
文字列 separator が空の場合、文字列 s を 1 文字ごとの配列に分割します。
次の場合、空の部分文字列が生成されることがあります:
- 空ではないセパレーターが文字列の先頭または末尾に現れる場合
- 空ではないセパレーターが連続して複数現れる場合
- 元の文字列
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を超えません。max_substrings <= 0の場合は、可能な限り多くの部分文字列を返します。デフォルト値:0。Int64
返される値
s を分割して得られた部分文字列の配列を返します。Array(String)
例
使用例
tokens
導入バージョン: v21.11
指定されたトークナイザを使用して文字列をトークンに分割します。
利用可能なトークナイザ:
splitByNonAlphaは、英数字以外の ASCII 文字で文字列を分割します(関数 splitByNonAlpha も参照してください)。splitByString(S)は、ユーザー定義の区切り文字列Sに基づいて文字列を分割します(関数 splitByString も参照してください)。区切り文字はオプションのパラメータで指定できます。例:tokenizer = splitByString([', ', '; ', '\n', '\\'])。各文字列は複数文字から成ることがあります(例中の', 'など)。明示的に指定しない場合(例:tokenizer = splitByString)、デフォルトの区切り文字リストは単一の空白[' ']です。ngrams(N)は、文字列を同じ長さのN-gram に分割します(関数 ngrams も参照してください)。ngram の長さは 1 から 8 の整数のオプションパラメータで指定できます。例:tokenizer = ngrams(3)。明示的に指定しない場合(例:tokenizer = ngrams)、デフォルトの ngram サイズは 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が指定された場合、その長さ以上の n-gram のみが返されます。ngrams(N)と比較して、sparseGramsトークナイザは可変長の N-gram を生成し、元のテキストをより柔軟に表現できます。例えば、tokenizer = sparseGrams(3, 5, 4)は、内部的には入力文字列から 3-, 4-, 5-gram を生成しますが、返されるのは 4-gram と 5-gram のみです。arrayはトークナイズを行いません。つまり各行の値がそのままトークンとなります(関数 array も参照してください)。
splitByString トークナイザの場合、トークンが prefix code を形成しないときは、より長い区切り文字を優先してマッチさせたいことが多いでしょう。
そのためには、区切り文字を長い順(長さの降順)に並べて渡します。
例えば、separators = ['%21', '%'] とした場合、文字列 %21abc は ['abc'] にトークナイズされますが、separators = ['%', '%21'] とすると ['21ac'] にトークナイズされてしまいます(これはおそらく意図した結果ではありません)。
構文
引数
value— 入力文字列。StringまたはFixedStringtokenizer— 使用するトークナイザー。指定可能な値は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の場合にのみ有効: 最小カットオフ長を定義する省略可能なパラメーター。const UInt8
戻り値
入力文字列から生成されたトークンの配列を返します。Array
使用例
デフォルトのトークナイザー
N-gram トークナイザー