ColdFusionが持つ正規表現関数の限界を発見するときに、一般的な正規表現で単純な文字列の置き換え以上のものを必要とするなら、あなたは確かに問題に遭遇し、壁に衝突します。 phpのpreg_replace_callback
ような組み込み関数はありません。
パラメータ | 詳細 |
---|---|
re | 正規表現 |
str | 正規表現に適用する文字列 |
callback | 一致した場合に捕捉されたグループ化が渡される関数。そこでマッチを処理することができます |
ColdFusion自体は私たちが望むものを提供しないので、ColdFusionの上にある、われわれの知る限りでは、さまざまなJavaに頼っています。 Javaはjava.util.regex.Pattern
提供しています。
実際にはここにあります:
Pattern
クラスオブジェクトからCompile
メソッドを呼び出し、それに正規表現パターンを渡します(おそらく後で使用するために正規表現パターンを格納します)。 Compile
メソッドが返すものについてMatcher
メソッドを呼び出し、パターンを実行する場所の文字列を渡します。 Matcher
メソッドが返すものに対してfind
メソッドを呼び出しfind
。 matcher.find()
がtrue
を返すtrue
、「それだけです」と言うこともできますが、考慮する必要がある点が1つあります。JavaのPatternオブジェクトはグループを格納し、別の関数を介してアクセスします。他のプログラミング言語がこのケースをどのように扱うかに関して一貫したものではない。したがって、捕捉されたグループを含む配列をコールバック関数に渡すことができるように、 matcher.group()
をループします。そして今我々は言うことができる: "それはそれです!