Toolkitのowa_patternパッケージは、文字列内でテキストのパターンを検索し、一致した文字列を別の文字列に置き換えます。このパッケージのサブプログラムでは正規表現を使用します。フラグについて説明します。文字列に指定されたパターンが含まれるかどうかを判定します。一致を検索する文字列内の場所を指定できます。文字列内のパターンを置き換えます。ファンクションとしてコールされた場合は、発見されて置換された正規表現の数を返します。VARCHAR2型からパターンのデータ型を生成します。文字列に指定されたパターンが含まれるかどうかを判定します。正規表現を格納するデータ型です。これらのサブプログラムはオーバーロードされます。各サブプログラムには複数のバージョンがあり、使用するパラメータによって区別されます。具体的には、MATCHには6つのバージョン、AMATCHとCHANGEには4つのバージョンがあります。サブプログラムでは次のパラメータを使用します。一致を検査する対象です。複数行のテキストまたはowa_text.multi_lineデータ型の場合があります。サブプログラムがline中で検索するパターンです。このパターンには正規表現を使用できます。owa_pattern.changeファンクションおよびプロシージャでは、このパラメータはfrom_strという名前になっています。検索で大/小文字を区別するかどうか、または置換をグローバルに行うかどうかを指定します。様々なワイルドカード・トークンや数量詞を使用して検索する文字列を作成することで、正規表現を指定します。ワイルドカード・トークンワイルドカード・トークンは、ワイルドカード・トークン以外のものと一致します。表6-1では各ワイルドカード・トークンを定義します。owa_patternパッケージが認識するワイルドカード・トークントークン説明^改行またはターゲットの先頭と一致する。$改行またはターゲットの最後と一致する。.改行以外の任意の文字と一致する。\d数字(0〜9)と一致する。\D数字以外(0〜9以外)と一致する。\w単語文字(0〜9、a〜z、A〜Z、または_)と一致する。\W単語文字以外(0〜9、a〜z、A〜Z、または_以外)と一致する。\s空白文字(ブランク、タブまたは改行)と一致する。\S空白文字以外(ブランク、タブまたは改行以外)と一致する。\b単語境界(\wと\Wの間)と一致する。\x<HEX>現行キャラクタ・セットにおける16進数2桁の値と一致する。\<OCT>現行キャラクタ・セットにおける8進数2桁または3桁の値と一致する。\別の方法でその文字との一致を指定できない任意の文字の前に付ける。&CHANGEに対してのみ適用される。これを使用すると、正規表現と一致した文字列を、それと置換する文字列に挿入可能。このトークンは、ターゲットの一致方法ではなく、ターゲットの変更方法を指定する点が、他のトークンと異なる。このトークンの詳細は、CHANGEを参照。数量詞&以外のトークンは、次のいずれかの数量詞を使用して意味を拡張できます。これらの数量詞はリテラルにも適用できます。表6-2では各数量詞を定義します。フラグowa_patternのファンクションおよびプロシージャでは、ターゲットおよび正規表現以外にも、フラグを使用してその解釈方法を変更できます。表6-3ではフラグを定義します。フラグフラグ説明i大/小文字を区別しない検索を示す。gCHANGEに対してのみ適用される。グローバルな置換を示す。正規表現と一致するターゲットのすべての部分が置換される。owa_pattern.amatchファンクション文字列内の特定の位置でパターンが発生するかどうかを指定します。このファンクションには4つのバージョンがあります。1番目と2番目のバージョンは、一致したトークンを保存しません(3番目と4番目のバージョンでは、一致したトークンはbackrefsパラメータに保存されます)。1番目と2番目のバージョンの違いは、patパラメータです。このパラメータのデータ型は、VARCHAR2またはpatternです。このファンクションの3番目と4番目のバージョンは、一致したトークンをbackrefsパラメータに保存します。3番目と4番目のバージョンの違いは、patパラメータです。このパラメータのデータ型は、VARCHAR2またはpatternです。注意:オーバーラップする複数の文字列が正規表現と一致する場合は、最も長く一致する文字列が取得されます。表6-4では、owa_pattern.amatchファンクションのプロパティを定義します。検索を開始するline内の位置(文字数で指定)。正規表現を含めることが可能。データ型はVARCHAR2またはpattern。patternの場合、このパラメータの出力値は一致したパターン。一致した各トークンは、owa_text.vc_arrデータ型のPL/SQL表のセルに格納される。検索で大/小文字を区別するかどうか。このパラメータの値が「i」の場合、検索で大/小文字を区別しない。それ以外の場合は大/小文字が区別される。戻り値:一致が終了した後の文字の索引。lineの先頭から数えた値。一致するものがなかった場合は、0が返される。owa_pattern.changeファンクションおよびプロシージャ文字列またはmulti_lineデータ型を検索して置換します。オーバーラップする複数の文字列が正規表現と一致する場合は、最も長く一致する文字列が取得されます。表6-5では、owa_pattern.changeファンクションおよびプロシージャのプロパティを定義します。このパラメータの出力値は、変更された文字列。これは、owa_text.multi_lineデータ型。このパラメータの出力値は、変更された文字列。発見された文字列と置き換えるパターン。大/小文字を区別して検索するかどうか、および変更をグローバルに行うかどうか。「i」を指定すると、検索で大/小文字を区別しない。「g」を指定すると、すべての一致に対して変更が行われる。指定しない場合、最初の一致を置換した後でファンクションは停止する。戻り値:ファンクションの場合、置換回数が返される。フラグ「g」を使用しないと、この数は0または1のみで、最初に一致したもののみが置換される。フラグ「g」を指定すると、正規表現と一致するものはすべて置換される。red」と置き換えられる。pajamas」に置換される。これをプロシージャではなくファンクションとしてコールすると、返される値は1になり、置換が1回行われたことを示す。owa_pattern.getpatプロシージャVARCHAR2の文字列をowa_pattern.patternデータ型に変換します。表6-6では、owa_pattern.getpatプロシージャのプロパティを定義します。argで初期化されたowa_pattern.patternデータ型。owa_pattern.matchファンクション文字列に指定されたパターンが含まれるかどうかを判定します。このパターンには正規表現を使用できます。オーバーラップする複数の文字列が正規表現と一致する場合は、最も長く一致する文字列が取得されます。このファンクションの正規表現としては、VARCHAR2またはowa_pattern.patternデータ型を使用できます。文字列からowa_pattern.patternデータ型を作成するには、owa_pattern.getpatプロシージャを使用します。長い文字列からmulti_lineデータ型を作成するには、owa_text.stream2multiプロシージャを使用します。multi_lineを使用した場合、rlistパラメータにより、検索された一致部分のリストが示されます。lineが文字列でmulti_lineではない場合は、backrefsという名前のオプションの出力パラメータを追加できます。このパラメータはrow_listで、正規表現の一連のトークンと一致したターゲット内の各文字列を保持します。表6-7では、owa_pattern.matchファンクションのプロパティを定義します。