この質問の重複が見つからなかったのは驚きです。いくつかのSQL文字列を解析して、最初の「SELECT...FROM」文字列を別の文字列に置き換えようとしています。それほど難しいことではないと思いますが、まだ解決策を見つけていません。テスト文字列が次の場合:
' SELECT something, something_else FROM (SELECT somebody FROM some_table)'
そして私はそれを次のように置き換えたいと思います:
' SELECT count(*) as total FROM (SELECT somebody FROM some_table)'
REReplaceNoCase()を使用して次の正規表現を試しました。
<cfset SQL = #REReplaceNoCase(test, "^\s*(SELECT.*\s+FROM\s)??", "SELECT count(*) as total FROM ")# />
<cfset SQL = #REReplaceNoCase(test, "^\s*SELECT.*(\s+FROM\s)??", "SELECT count(*) as total FROM ")# />
<cfset SQL = #REReplaceNoCase(test, "^\s*SELECT.*\s+(FROM)??\s", "SELECT count(*) as total FROM ")# />
だけでなく、他のいくつかのバリエーション。提案?