美化したい SQL コードのファイルがあり、コードの特定の行/部分が文字列かコメントかを区別するのに苦労しています。
私の現在のプロセスは、ファイル全体でパターン/マッチャー検索を実行し、正規表現を含む文字列N?'([']{2}|[^'])*+'(?!')
と\s*--.*?\n|/\*.*?\*/
.
例:
WHERE y = 'STRING'
->WHERE y = THIS_IS_A_STRING
そしてstrings[0] = 'STRING'
SELECT x --do not format
->SELECT x THIS_IS_A_COMMENT
そしてcomments[0] = --do not format
すべてを美化した後、配列からそれぞれの値を検索しTHIS_IS_A_STRING
て復元します。THIS_IS_A_COMMENT
私が直面している問題は、コメントにアポストロフィが含まれている場合、または SQL 文字列にダッシュが 2 つ含まれている場合です。1 つの問題を修正できますが、最初に文字列を保持するかコメントを保持するかによって、別の問題が発生します。
例えば:
--Don't format this
'nt format this
最初の文字列を保持すると、次の , までずっと一致します'
(複数行の文字列を使用できるため)。
反対に、最初にコメントを保持することを選択した場合:
SELECT x FROM y WHERE z = '--THIS_IS_AS_STRING--'
を検出し--
、次の改行まですべてをコメント配列に格納します。
どんな助けでも大歓迎です。
編集:おそらくSQLパーサーでこれを行う必要があることはわかっていますが、主に正規表現でこれに取り組んでおり、これが仕上げに必要な最後のステップです