2

[az] を使用して、CF 8 で a から z までの任意のアルファベットをチェックできることは知っています。ただし、á、í、ó、é、ñ などのスペイン語のアルファベットを検出する正規表現はありますか?

前もってありがとう、モンテ

4

3 に答える 3

3

ColdFusion は Unicode 正規表現を適切に処理しません。文字を正規表現文字列にするなどの方法を使用できます#Chr(375)#が、それを行うのは少し面倒です。

ただし、Java は Unicode で動作し、CF は Java を簡単に利用できるため、Java 正規表現を使用して Unicode マッチングを行うことができます。


これは、Java 正規表現の 1 つの Unicode 文字と一致します。

\p{L}

正規表現 Unicode の詳細については、http: //www.regular-expressions.info/unicode.htmlをご覧ください。


そして、CF での Java 正規表現の使用に関しては、単純な置き換えは次のとおりです。

<cfset NewString = OldString.replaceAll('\p{L}','ReplaceWith') />

したがって、文字列を置き換えるだけでよい場合は、それを行うことができます。

ただし、マッチング (再マッチングと同等) またはより複雑な機能が必要な場合、最も簡単な解決策は、Java 正規表現機能を、呼び出し可能な通常の CFML 関数を使用して使いやすい CFC にラップするコンポーネントを使用することです。jre-utils.cfc のように

これにより、次のことが可能になります。

<cfset jre = createObject('component','jre-utils').init() />

<cfset Matches = jre.match( '\p{L}++' , String ) />

文字列内の (Unicode) 単語の配列を返します。


于 2009-07-21T21:47:31.567 に答える
0

最近、ここで国際正規表現についての議論がありましたが、今は見つけることができません。現在の状況は、デフォルトのラテン文字のみで正規表現が一般的に可能であるということだと思います。

于 2009-07-21T20:15:39.660 に答える
0

特別な「単語文字クラス」が\wうまくいくかどうか試してください。注意: これも数字と一致します。おそらく、あなたが正確に達成したいことを例で明確にすることができますか?

\waäまたはá(ただし、 も)と一致する必要があり0ます。

\w(?<!\d)aäまたはá(ただし、ではありません)に一致し0ます。

\w+一致börkしますが、またl33t

\b(?:\w(?<!\d))+\b一致しますが、一致börkしませんl33t

于 2009-07-21T20:35:52.787 に答える