ColdFusion の Find 関数や Replace 関数で実行できるような従来の文字列マッチングでは、検索する文字列パターンと、検索対象となる文字列を指定します。次の例では、" BIG " というパターンの文字列を検索し、検索された場合はその文字列インデックスを返します。文字列インデックスとは、検索文字列における文字列パターンの開始位置です。

<cfset IndexOfOccurrence=Find(" BIG ", "Some BIG string")> 
<!--- The value of IndexOfOccurrence is 5 --->

この検索では、文字列パターンを正確に(具体的に)指定する必要があります。そのパターンに正確に一致するものが検出されなかった場合、Find はインデックス 0 を返します。文字列パターンを具体的に指定する必要があるので、ダイナミックなデータマッチングは困難です。 

次の例では、正規表現を使用して同じ検索を行います。この例では、前後をスペースで囲まれた、大文字のみで構成される最初の文字列を、検索文字列の中から検索します。

<!--- The value of IndexOfOccurrence is 5 --->

正規表現 " [A-Z]+ " は、先頭に 1 文字のスペースがあり、その後に大文字が何文字か続き、最後に 1 文字のスペースがある文字列パターンに一致します。したがって、この正規表現は、文字列 " BIG " だけでなく、前後にスペースがある任意の大文字の文字列に一致します。 
デフォルトでは、正規表現のマッチングでは大文字と小文字が区別されます。大文字と小文字を区別しない場合は、REFindNoCase 関数および REReplaceNoCase 関数を使用します。
大量のテキストデータをダイナミックに処理する状況はよく発生するので、複雑な ColdFusion アプリケーションを作成する上で正規表現は非常に重要です。

ColdFusion の正規表現関数の使用

ColdFusion には、正規表現を使用できる次の 4 つの関数が用意されています。

REFind および REFindNoCase は、正規表現を使用して特定のパターンの文字列を検索し、パターンが検索された場所を表す文字列インデックスを返します。たとえば、次の関数は、最初に検索された文字列 " BIG " のインデックスを返します。

<!--- The value of IndexOfOccurrence is 5 --->

次に出現する文字列 " BIG " を検索するには、REFind 関数をもう一度呼び出す必要があります。1 つの検索文字列を繰り返し検索して、正規表現に一致する文字列をすべて検索する例については、一致したサブ式に関する情報の取得を参照してください。
REReplace および REReplaceNoCase は、正規表現を使用して文字列内を検索し、その正規表現に一致する文字列パターンを、別の文字列に置き換えます。これらの関数では、最初に一致した文字列パターンのみを置き換えることも、すべての文字列パターンを置き換えることもできます。 
正規表現を使用する ColdFusion 関数の詳細については、『CFML リファレンス』を参照してください。

正規表現の基本的なシンタックス

最も単純な正規表現は、リテラル文字のみで構成される正規表現です。リテラル文字は、検索するテキストを正確に(具体的に)指定する場合に使用します。例えば、次の正規表現関数 REFind では、Find 関数を使用した場合と同様に、文字列パターン " BIG " が検索されます。

<!--- The value of IndexOfOccurrence is 5 --->

この例では、具体的な文字列パターン " BIG " に正確に一致するものが検索されます。 

正規表現を最大限に活用するには、次の例のように、リテラル文字、文字セット、特殊文字を組み合わせて使用します。

<!--- The value of IndexOfOccurrence is 5 --->

この正規表現で使用されているリテラル文字は、先頭および末尾のスペース文字です。文字セットは、角括弧で囲まれている部分です。この文字セットは、A ~ Z の任意の大文字を 1 つ検索することを表します。角括弧の後にあるプラス符号 は、その文字セットの繰り返しを検索することを表す特殊文字です。
この正規表現から + を削除して " [A-Z] " とした場合は、リテラルスペースの後に 1 文字の大文字があり、その後に 1 文字のスペースがある文字列に一致します。この正規表現は、" B " には一致しますが、" BIG " には一致しません。REFind 関数で 0 が返される場合は、正規表現に一致する文字列が検索されなかったことを示します。 
リテラル文字、文字セット、特殊文字を使用すれば、複雑な正規表現を作成できます。あらゆるプログラミング言語と同様に、正規表現も慣れるに従ってさまざまな処理が記述できるようになります。この例は、ごく基本的な使用方法にすぎません。その他の例については、正規表現の例を参照してください。

Java Regex フラグ

ColdFusion Administrator でサーバーの設定/設定を使用してで、ColdFusion アプリケーションの Regex エンジンをサーバーレベルで変更できます。

Java を Regex エンジンとして使用」オプションを有効または無効にすると、Java を ColdFusion アプリケーションのデフォルトの Regex エンジンとして使用するかどうかを指定できます。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

リーガルノーティス   |   プライバシーポリシー