- カテゴリ:
REGEXP_INSTR¶
文字列サブジェクト内の正規表現パターンの指定された出現の位置を返します。
文字列関数(正規表現) もご参照ください。
構文¶
引数¶
必須:
subject一致を検索する文字列です。
pattern一致するパターンです。
パターンの指定に関するガイドラインについては、 文字列関数(正規表現) をご参照ください。
オプション:
position関数が一致の検索を開始する文字列の先頭からの文字数です。値は正の整数にする必要があります。
デフォルト:
1(一致の検索は左側の最初の文字から始まります)occurrence一致を返し始めるパターンの最初の出現を指定します。
この関数は、最初の
occurrence - 1の一致をスキップします。例えば、5件の一致があり、occurrence引数に3を指定した場合、関数は最初の2件の一致を無視し、3番目、4番目、5番目の一致を返します。デフォルト:
1option一致の最初の文字のオフセット(
0)を返すか、一致の最後に続く最初の文字のオフセット(1)を返すかを指定します。デフォルト:
0regexp_parameters一致の検索に使用されるパラメーターを指定する1つ以上の文字の文字列です。サポートされている値:
パラメーター
説明
c大文字と小文字を区別する一致
i大文字と小文字を区別しない一致
m複数行モード
e部分一致を抽出
s単一行モード POSIX ワイルドカード文字
.一致\nデフォルト:
c詳細については、 正規表現のパラメーターの指定 をご参照ください。
注釈
デフォルトでは、 REGEXP_INSTR は、件名の一致部分全体の開始または終了文字オフセットを返します。ただし、
e(「抽出」のため)パラメーターが指定されている場合、 REGEXP_INSTR は、パターンの最初のサブ式に一致するサブジェクト部分の開始文字または終了文字のオフセットを返します。eは指定されているものの、group_numが指定されていない場合、group_numはデフォルトで1(最初のグループ)になります。 パターンにサブ式がない場合、 REGEXP_INSTR はeが設定されていないかのように動作します。eを使用する例については、このトピックの 例 をご参照ください。group_numgroup_numパラメーターは、抽出するグループを指定します。グループは、正規表現で括弧を使用して指定されます。group_numが指定されている場合、Snowflakeはeオプションが指定されていなくても抽出を許可します。eオプションが暗示されています。Snowflakeは最大1024個のグループをサポートします。
group_numを使用する例については、このトピックの キャプチャグループの例 をご参照ください。
戻り値¶
NUMBER 型の値を返します。
一致するものが見つからない場合、 0 を返します。
使用上の注意¶
ポジションは0ベースではなく、1ベースです。例えば、「MAN」の文字「M」の位置は、0ではなく1です。
追加の使用上の注意については、正規表現関数の 一般的な使用上の注意 をご参照ください。
照合順序の詳細¶
Arguments with collation specifications currently aren't supported.
例¶
以下の例では、 REGEXP_INSTR 関数を使用しています。
基本的な例¶
テーブルを作成してデータを挿入します。
一致する文字列を検索します。この場合、文字列は nevermore で1つの10進数が後に続きます(例: nevermore1)。この例では、 REGEXP_SUBSTR 関数を使って、一致する部分文字列を表示しています。
一致する文字列を検索しますが、文字列の最初の文字ではなく、文字列の5番目の文字から開始します。
一致する文字列を検索しますが、最初の一致ではなく3番目の一致を探します。
このクエリは、前のクエリとほぼ同じですが、 option 引数を使用して、一致する式の位置、または一致する式の後にある最初の文字の位置を表示する方法を示します。
このクエリは、最後の実際の出現を超えて出現を検索した場合、返される位置は0であることを示しています。
キャプチャグループの例¶
このセクションでは、正規表現の「グループ」機能の使用方法を示します。
このセクションの最初のいくつかの例では、キャプチャグループを使用しません。このセクションは簡単な例から始まり、キャプチャグループを使用する例へと続きます。
これらの例では、以下で作成された文字列を使用します。
文字列には以下のような特徴があります。
2のidを含む文字列には、「the」という単語が複数回出現します。3のidを含む文字列には、単語「the」が複数回出現し、単語間に余分な空白があります。4のidを含む文字列には、複数の単語(「thespian」と「theater」)の中に「the」という文字シーケンスがありますが、「the」という単語自体はありません。
この例では、1つまたは複数の単語文字が後に続いている1つまたは複数の単語以外の文字が後に続く、単語 the の最初の出現箇所を探します。
「単語文字」には、a〜zとA〜Zの文字だけでなく、アンダースコア(「_」)と10進数0~9も含まれますが、空白、句読点などは含まれません。
文字列の最初の位置から始めて、1つまたは複数の単語文字が後に続いている1つまたは複数の単語以外の文字が後に続く、2番目に出現する単語 the を探します。
この例は前の例に似ていますが、キャプチャグループを追加します。このクエリは、一致全体の位置を返すのではなく、 グループ のみの位置(つまり、括弧内の正規表現の部分に一致する部分文字列の部分のみの位置)を返します。この場合、返される値は、単語 the が2番目に出現した後の単語の位置です。
'e' (抽出)パラメーターを指定するけれども、 group_num を指定しない場合、 group_num はデフォルトで 1 になります。
group_num を指定すると、パラメーターの1つとして 'e' (抽出)を指定しなかった場合でも、Snowflakeは抽出すると想定します。
この例では、最初の単語が A である2単語パターンの最初、2番目、および3番目の一致から2番目の単語の位置を取得する方法を示します。これは、最後のパターンを超えようとするとSnowflakeが0を返すことも示しています。
テーブルを作成してデータを挿入します。
クエリを実行します。
この例は、パターンの初出内にある最初、2番目、3番目のグループの位置を取得する方法を示しています。この場合、返される値は、単語 MAN の個々の文字の位置です。
追加の例¶
次の例は、単語 was の出現に一致します。マッチングは文字列の最初の文字から始まり、最初の出現に続く文字の文字列内の位置を返します。
次の例では、パターンに一致する文字列の一部の最初の文字のオフセットを返します。マッチングは文字列の最初の文字から始まり、パターンの最初の出現を返します。
次の例は前の例と同じですが、 e パラメーターを使用して、パターンの最初のサブ式に一致するサブジェクト部分の文字オフセットを返します(the の後の最初の単語文字セット)。
次の例は、2文字以上のアルファベット文字(大文字と小文字を区別しない)が前にある st で終わる単語の出現に一致します。マッチングは文字列の15番目の文字から始まり、最初の出現(worst の最初)に続く文字の文字列内の位置を返します。
次の一連の例を実行するために、テーブルを作成してデータを挿入します。
小文字 o を含む、最初に一致した最初の文字のオフセットを返します。
対象の3番目の文字から開始し、小文字の o を含む最初に一致したものの最初の文字のオフセットを返します。
対象の3番目の文字から開始し、小文字の o を含む3番目に一致したものの最初の文字のオフセットを返します。
対象の3番目の文字から開始し、小文字の o を含む3番目に一致したものの最後の文字のオフセットを返します。
大文字小文字を区別しない一致で、対象の3番目の文字から開始し、小文字の o を含む3番目に一致したものの最後の文字のオフセットを返します。