我试图在vim中为以标准大写形式编写的常量添加一些语法着色:
HELLO_WORLD
_GOOD_BYE_WORLD
当我转到http://regex101.com/时,我可以将这些与以下内容相匹配:
/(_*[A-Z]+_*)+
但是使用vim它并不匹配任何东西。
/ _将匹配单个下划线但/ _ *将不匹配多个下划线,它匹配每个字符。在阅读了一些vim正则表达式文档(http://vimdoc.sourceforge.net/htmldoc/pattern.html)后,似乎下划线用于跨行扩展匹配。但是,文档中列出的所有模式都使用\ _(转义下划线)而不是字符。
如何匹配此表单的单词?
为什么_ *匹配每个角色?
答案 0 :(得分:2)
答案 1 :(得分:2)
你也可以使用vim的魔术选项\ v
/\v(_*[A-Z]+_*)+
http://vim.wikia.com/wiki/Simplifying_regular_expressions_using_magic_and_no-magic
答案 2 :(得分:2)
我认为\<[_A-Z]\+\>
会做你想做的事。
接受的答案是匹配小写字母中包含的下划线和大写字母。