gpt4 book ai didi

regex - Vim 语法高亮 - 从模式中排除特定文本

转载 作者:行者123 更新时间:2023-12-04 21:37:38 25 4
gpt4 key购买 nike

我已经定义了 sqlVariablesqlString在我的语法文件中

syn match   sqlVariable ":[a-z][a-z0-9_#$]*"
syn region sqlString start=+'+ end=+'+ contains=sqlVariable

(加上一些其他的引用变体。)字符串可以包含 sqlVariable为了突出显示动态代码中的绑定(bind),如 :b1'select a from b where c = :b1' . (这是针对 Oracle 的。)

这一切都很好 - 除了包含冒号的日期格式掩码的特定烦人情况,例如
to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')

:MI 和 :SS 被突出显示为变量,因为它们当然符合我的模式。

有没有办法使 :MI 和 :SS 不匹配 sqlVariable在带引号的字符串中? (我认为只有这两种情况就可以了。)

最佳答案

这有帮助吗?

syn match sqlVariable ":[a-z][a-z0-9_#$]*\ze\(\s\|'$\)"

它将匹配那些 :foo如果它们后跟一个空格或 '然后是 EOL( $)。

所以, :a1 :b1 and :c1将匹配:
'select * from foo where a= :a1 and b=: b1 and c = :c1'

但不匹配:
to_char(sysdate,'YYYY-MM-DD HH24:MI:SS')

希望能帮助到你。

如果没有,也许您可​​以重新考虑 region定义。

关于regex - Vim 语法高亮 - 从模式中排除特定文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34140817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com