2.4 データのパターンをリダクションする正規表現

正規表現によって、パターン検索に基づいて列データの値内にある特定のデータをリダクションします。正規表現を使用して、長さが異なる文字列の列をリダクションできます。

たとえば、ドメインのみが表示されるように電子メール・アドレスのユーザー名をリダクションできます(電子メール・アドレスhpreston@example.comhpreston[redacted]に置き換えて、[redacted]@example.comと表示するなど)。リダクションを実行するには、DBMS_REDACT.ADD_POLICYまたはDBMS_REDACT.ALTER_POLICYプロシージャのfunction_typeパラメータをDBMS_REDACT.REGEXPまたはDBMS_REDACT.REGEXP_WIDTHのいずれかに設定し、さらに次のパラメータを使用して、正規表現を作成します:

  • 文字列検索パターン(つまり、検索対象の値)で、例は次のとおりです。

    regexp_pattern => '(.+)@(.+\.[A-Za-z]{2,4})' 
    

    この設定では、次の形式のパターンが検索されます。

    one_or_more_characters@one_or_more_characters.2-4_characters_in_range_A-Z_or_a-z
    
  • regexp_pattern設定で一致した値を置換する置換文字列です。置換文字列は、主要な正規表現パターンの副次式に後方参照を含めることができます。次の例では、(regexp_pattern設定の) @記号の前にあるデータをテキスト[redacted]に置き換えます。\2設定は、2番目の一致グループであるregexp_pattern設定の(.+\.[A-Za-z]{2,4})を示します。

    regexp_replace_string => '[redacted]@\2'
    
  • データの最初の文字などの文字列検索の文字の開始位置で、例は次のとおりです。

    regexp_position => DBMS_REDACT.RE_BEGINNING
    

    この値は、指定しない場合のデフォルトです。

  • 実行する検索および置換操作の種類(最初の出現、5回おきの出現、すべて出現)で、例は次のとおりです。

    regexp_occurrence => DBMS_REDACT.RE_ALL
    

    この値は、指定しない場合のデフォルトです。

  • 検索および置換操作のデフォルトの一致動作で、検索で大/小文字を区別するかどうかの例は次のとおりです(iはこれを大/小文字の区別なしに設定します)。

    regexp_match_parameter => 'i'

デフォルトのパラメータに加え、電話番号、電子メール・アドレスおよびクレジット・カード番号に、よく使用される正規表現を使用できるように事前定義された形式のセットを使用できます。