Looking for coldfusion Answers? Try Ask4KnowledgeBase
Looking for coldfusion Keywords? Try Ask4Keywords

coldfusionRegExpの使用コールバックの置換


前書き

ColdFusionが持つ正規表現関数の限界を発見するときに、一般的な正規表現で単純な文字列の置き換え以上のものを必要とするなら、あなたは確かに問題に遭遇し、壁に衝突します。 phpのpreg_replace_callbackような組み込み関数はありません。

パラメーター

パラメータ詳細
re 正規表現
str 正規表現に適用する文字列
callback 一致した場合に捕捉されたグループ化が渡される関数。そこでマッチを処理することができます

備考

ColdFusion自体は私たちが望むものを提供しないので、ColdFusionの上にある、われわれの知る限りでは、さまざまなJavaに頼っています。 Javaはjava.util.regex.Pattern提供しています。

実際にはここにあります:

  1. PatternクラスオブジェクトからCompileメソッドを呼び出し、それに正規表現パターンを渡します(おそらく後で使用するために正規表現パターンを格納します)。
  2. Compileメソッドが返すものについてMatcherメソッドを呼び出し、パターンを実行する場所の文字列を渡します。
  3. 一致が成功したかどうかをテストするには、 Matcherメソッドが返すものに対してfindメソッドを呼び出しfind

matcher.find()trueを返すtrue 、「それだけです」と言うこともできますが、考慮する必要がある点が1つあります。JavaのPatternオブジェクトはグループを格納し、別の関数を介してアクセスします。他のプログラミング言語がこのケースをどのように扱うかに関して一貫したものではない。したがって、捕捉されたグループを含む配列をコールバック関数に渡すことができるように、 matcher.group()をループします。そして今我々は言うことができる: "それはそれです!

RegExpの使用コールバックの置換 関連する例