私たちは、より SQL 指向のプロジェクトの 1 つで RoundhouseE 移行ツールを使用しています。私は非常に奇妙なバグに無精ひげを持っています
特定の SQL 関数スクリプト (悲しいことに、顧客の所有物であるため、スクリプトを提供できません) により、RegEx の Replace メソッドが返されなくなります。
正規表現は次のようになります
(?<KEEP1>^(?:[\s\t])*(?:-{2}).*$)|(?<KEEP1>/{1}\*{1}[\S\s]*?\*{1}/{1})|(?<KEEP1>'{1}(?:[^']|\n[^'])*?'{1})|(?<KEEP1>\s)(?<BATCHSPLITTER>GO)(?<KEEP2>\s)|(?<KEEP1>\s)(?<BATCHSPLITTER>GO)(?<KEEP2>$)
RounhouseE で返されないコード行
string sql_statement_scrubbed = regex_replace.Replace(sql_to_run, match => evaluate_and_replace_batch_split_items(match, regex_replace));
問題はデリゲートではなくevaluate_and_replace_batch_split_items
、実際の regex.Replace メソッドにあります。単純な正規表現ツールで正規表現を試してみましたが、ハングします。正規表現の第一人者であるここにいる誰かが、問題が何であるかを理解できるでしょうか?
編集:このSQLコメントから'-- If no previous, don't report revised
(アポストロフィ)を削除する
と機能しますが、その行は単独で機能するため、スクリプト内の他のテキストの組み合わせである必要があるだけではありません