I sqlVariable
und sqlString
in meiner Syntax-Datei alsVim Syntax-Hervorhebung - ausschließen bestimmten Text aus einem Muster
syn match sqlVariable ":[a-z][a-z0-9_#$]*"
syn region sqlString start=+'+ end=+'+ contains=sqlVariable
definiert haben Strings sqlVariable
um bindet hervorzuheben enthalten kann innerhalb (plus einige andere zitieren Variationen.) dynamischer Code wie der :b1
in 'select a from b where c = :b1'
. (Dies ist für Oracle btw.)
Das alles funktioniert gut - mit Ausnahme der spezifischen ärgerlichen Fall von Datumsformatmasken mit Doppelpunkten, z.
to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')
: MI und: SS sind als Variablen markiert, weil sie natürlich zu meinem Muster passen.
Gibt es eine Möglichkeit zu machen: MI und: SS stimmen nicht sqlVariable
innerhalb einer Zeichenfolge in Anführungszeichen? (Ich denke, nur diese beiden Fälle würden es tun.)
Sie könnten versuchen, ein Lookahead am Ende des Musters hinzuzufügen: '\ (([^ '] |' [^ '] *') * $ \) \ @ =' –
Umm, ich könnte, wenn ich das verstanden hätte um dieses Beispiel in meiner Syntaxdatei zu verwenden ... –
Ich habe versucht ': [az] [a-z0-9 _ # $] * \ (\ ([^"] \ | "[^"] * "\) * \ $ \) \ @ = 'aber kein Glück :( –