私は[az]を使ってCF 8のaからzまでのアルファベットを調べることができます。しかし、á、í、ó、éのようなスペイン語のアルファベットを検出する正規表現はありますか? 、ñ、など?事前にColdFusion 8のスペイン語の正規表現のためのRegEx
おかげで、 モンテ
私は[az]を使ってCF 8のaからzまでのアルファベットを調べることができます。しかし、á、í、ó、éのようなスペイン語のアルファベットを検出する正規表現はありますか? 、ñ、など?事前にColdFusion 8のスペイン語の正規表現のためのRegEx
おかげで、 モンテ
私は今見つけることができない国際的な正規表現についてのここでの議論が最近ありました。現在の状況では、正規表現は一般的にデフォルトのラテンアルファベットのみで可能であると考えています。
特別な「単語文字クラス」\w
があなたに役立つかどうか試してみてください。注意:これは数字にも一致します。おそらく、あなたは正確に何を達成したいのかという事例を明確にすることができますか?
\w
はa
、ä
またはá
(も0
)と一致すべきです。
\w(?<!\d)
はa
、ä
またはá
(ただし0
)と一致します。
\w+
はbörk
と一致し、l33t
となります。
\b(?:\w(?<!\d))+\b
は、börk
と一致しますが、l33t
と一致しません。
CF正規表現では\ wは英数字とアンダースコアにのみ一致し、負のルックアヘッドはサポートしていません。 –
ColdFusionでは、Unicode正規表現はうまく処理されません。 #Chr(375)#
のようなものを使って文字を正規表現の文字列にすることはできますが、それをするのは面倒です。
しかし、JavaはUnicodeで動作し、CFはJavaを簡単に使用できるため、Java正規表現を使用してUnicodeマッチングを行うことができます。正規表現ここではUnicodeの詳細で
\p{L}
:
これは、Javaの正規表現での単一の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) />
。この時点で、それはまだかなりのだ、という第二
「構築、独自の」標準ラテンアルファベット外で作業しているとき。 – patjbs