5

alt-0146 で入力できるこの文字 ' を一致させようとしています。Word では Unicode 0x2019 であると表示されますが、ColdFusion で正規表現を使用して一致させることができないようです。これは、2〜10文字とアポストロフィとこの文字を一致させるために使用しているスニペットです

[[:alpha:]'\x2019]{2,10}

しかし、それは機能していません。何か案は?

4

2 に答える 2

8

CF の \x 短縮形は、最初の 255 ASCII 文字のみをサポートしているようです。その数を超えるには、次のようにインラインで chr コマンドを使用する必要があります。

<cfscript>
   yourString = "’";
   result = refind("[[:alpha:]'" & chr(8217) & "]{2,10}", yourString);
   writeOutput(result);
</cfscript>

それはあなたに一致するはずです。

于 2009-02-10T15:26:02.610 に答える
2

あなたが試すことができるもう一つのことは、キャラクターを直接含めることです:

[[:alpha:]'#Chr(8217)#]{2,10}


ただし、それがCF正規表現で機能するかどうかはわかりません。そうでない場合でも、CF内でJava正規表現を使用するオプションがあります。これは簡単に実行でき、ユニコードのサポートを含め、はるかに幅広い正規表現機能を使用できます。

置換を行う場合は、CF文字列に対して直接Java正規表現を実行できます。次に例を示します。

<cfset NewString = OrigString.replaceAll( 'ajavaregex' , 'replacement' )/>


他の機能(たとえば、一致の配列の取得、置換時のコールバック関数)については、Java RegExユーティリティを作成しました。これは、これらの機能を単一の関数呼び出しに単純化する単一のコンポーネントです。

于 2009-02-10T13:37:29.767 に答える