SQL用のTextMate文法を編集しています。現在、正規表現があります(明確にするためにキーワードは省略されています)。
(?i:^\s*(create)\s+(aggregate|function|(unique\s+)?index|table)\s+)(['"`]?)(\w+)\4
これは、次のような関数定義と正しく一致します
CREATE FUNCTION similarity
処理したかったCREATE OR REPLACE
ので、正規表現をに変更しました
(?i:^\s*(create(\s+or\s+replace)?)\s+(aggregate|function|(unique\s+)?index|table)\s+)(['"`]?)(\w+)\4
とは一致しませCREATE
んCREATE OR REPLACE
。新しいオプションのグループもパッシブにすることで修正しました。
(?i:^\s*(create(?i:\s+or\s+replace)?)\s+(aggregate|function|(unique\s+)?index|table)\s+)(['"`]?)(\w+)\4
しかし..なぜ以前は一致しなかったのですか?私はそれが一致することを期待しますが、それから私が予期していなかったキャプチャグループを私に与える可能性があります(外側のパッシブグループインジケーターが新しい内側のグループに流れ落ちない場合)。