Oracle Cloud Infrastructureドキュメント

正規表現

正規表現を使用して、セット内の各文字列で共有される共通の特性に基づいて文字列のセットを記述できます。

正規表現は、基本的にはパターン一致に使用される検索パターンを定義する一連の文字です。 正規表現は複雑さによって異なりますが、作成方法の基本を理解した後、正規表現を記述または作成できます。

文字列リテラル

最も基本的なパターン一致の形式は、文字列リテラルの一致です。 たとえば、正規表現がEMPで、入力文字列がEMPの場合、文字列が同一であるため、一致は成功します。 この正規表現は、EMPLOYEE TEMPTEMPERATUREなどのEMPを含む文字列とも一致します。

メタ文字

パターンの照合方法に影響する特殊文字を使用することもできます。 最も一般的なものの1つに、任意の文字に一致するドット(.)記号があります。 たとえば、EMPLOYEE.IDは、EMPLOYEE_VERIFICATION_IDではなくEMPLOYEE_IDおよびEMPLOYEE-IDと照合します。 ここで、ドットはメタ・キャラクタです。 - マッチャによって解釈される特別な意味を持つ文字。

その他のメタ・キャラクタ: ^ $ ? + * \ - [ ] ( ) { }

メタ文字を文字どおりに(通常の文字として)処理する場合は、バックスラッシュ(\)を使用してエスケープします。 たとえば、9\+99+9と一致する正規表現があります。

文字クラス

文字クラスは、大カッコで囲まれた一連の文字です。 これは、指定された入力文字列からの1文字に正常に一致する文字を指定します。

次の表では、一般的な正規表現の構成について説明します。

構文 説明
[abc]

大カッコ内に記述された文字の1つに一致します。

例: EMPLOYE[ER]は、EMPLOYEEおよびEMPLOYERと照合します。

[^abc]

大カッコで囲まれた文字を除く、任意の文字との照合を実行します。

例: [^BC]ATは、RATおよびHATと一致しますが、BATおよびCATとは一致しません。

[A-Z0-9]

大カッコで囲まれた範囲内の任意の文字との照合を実行します。 範囲を指定するには、照合する最初の文字と最後の文字の間にダッシュ・メタ文字"-"を挿入します。たとえば、[1-5][A-M]のように入力します。 クラス内で異なる範囲を並べて配置し、一致の可能性をさらに広げることもできます。

例: [B-F]ATは、BATCATDATEAT、およびFATに一致しますが、AATおよびGATには一致しません。

Oracle Data Safeでは、事前定義済文字クラスもサポートされています。

グループの取得

取得グループを使用すると、複数の文字を1つの単位として処理できます。 グループの取得は、一連のカッコ内にグループ化する文字を指定することによって作成されます。 たとえば、(SSN)では、文字SSおよびNを含む単一グループが作成されます。

修飾子

数量詞を使用して、照合する発生数を指定できます。

次の表は、一般的な数量詞を示しています。

数量子 説明
X?

指定された文字または文字グループの、0または1回の出現に一致します。

例: SSN_NUMBERS?は、文字列SSN_NUMBERおよびSSN_NUMBERSに一致します。

X*

指定した文字または文字グループの0個以上の出現に一致します。

例: TERM.*DATEは、TERMDATETERM_DATELAST_TERMINATION_DATEなどの文字列と一致します。

X+

指定した1つ以上の文字または文字グループに一致します。

例: TERM.+DATEは、TERM_DATETERMINATION_DATEなどの文字列に一致しますが、TERMDATEには一致しません。

X{n}

指定した文字または文字グループをn時間のみと照合します。

例: 9{3}は、99ではなく999と一致します。

X{n,}

指定した文字または文字グループとn時間以上を照合します。

例: 9{3,}は、9999999および99999と一致しますが、99とは一致しません。

X{n,m}

指定した文字または文字グループがn時間以上m回以下であると照合します。

例: 9{3,4}は、99ではなく999および9999と照合します。

また、文字クラスのある数量詞およびグループの取得も使用できます。

文字クラスを使用する正規表現の例として、SSN0SSN1SSN12などの文字列と一致するSSN[0-9]+があります。 ここで、[0-9]は文字クラスであり、1回以上使用できます。 正規表現がSSNと一致しません。

取得グループを使用した正規表現の例は、SSN_NUMSSN_NUMBERに一致するSSN_NUM(BER)?です。 (BER)は取得グループであり、0回または1回のみ使用できます。

境界正規表現エンジン

境界マッチャを使用して、一致が発生する文字列内の場所を指定することで、パターン照合をより正確にすることができます。 たとえば、特定の単語を検索することに関心がある場合がありますが、入力文字列の先頭または末尾にその単語が表示されている場合に限ります。

次の表に、共通の境界マッチャを示します。

境界構文 説明
^

文字列の最初(検索で始まる)にある指定した文字または文字グループと一致します。

例: ^VISAは、VISAで始まる文字列と一致します。

$

文字列の末尾にある、指定した文字または文字グループと一致します(検索で終了)。

例: NUMBER$は、NUMBERで終わる文字列と一致します。

\b

単語境界を示します。 \bのペア間に指定された文字または文字グループが、それが(長い文字列内の部分文字列ではなく)別の単語である場合にのみ一致します。

例: \bAGE\bは、EMPLOYEE AGEPATIENT AGE INFORMATIONなどの文字列と一致しますが、AGEINGEMPLOYEEAGEなどの文字列とは一致しません。

境界マッチャが指定されていない場合、含まれている検索が実行されます。 たとえば、ELECTORALでは、ELECTORAL_IDID_ELECTORALELECTORALIDなどのELECTORALを含む文字列と一致します。

完全一致検索は、^$を一緒に使用して実行できます。 たとえば、 ^ADDRESS$では、文字列がADDRESSかどうかを正確に検索します。 これは、文字列ADDRESSと一致しますが、PRIMARY_ADDRESSADDRESS_HOMEなどの文字列とは一致しません。

論理演算子

いずれかの文字または文字グループをパイプで区切って一致させる場合、パイプまたは縦棒を使用できます(|)。 たとえば、EMPLOY(EE|ER)_IDは、EMPLOYEE_IDおよびEMPLOYER_IDと照合します。

^JOB.*(TITLE|PROFILE|POSITION)$は、JOBで始まる文字列と一致し、任意の文字がゼロ個以上出現した後、TITLEPROFILEまたはPOSITIONで終わる文字列を照合します。

^[A-Z]{3}[0-9]{2}[A-Z0-9]$は、3文字で始まり、その後に2桁が続く文字列と一致し、文字または数字で終わります。

BIRTH.?(COUNTRY|PLACE)|(COUNTRY|PLACE).*BIRTHは、BIRTH COUNTRYPATIENT_BIRTH_PLACEPLACE_OF_BIRTHEMPLOYEE'S COUNTRY OF BIRTHなどの文字列と一致します。

関連情報

詳細は、次のソースを参照してください: