Vim正则表达式匹配多个下划线

时间:2014-03-27 12:57:59

标签: regex vim

我试图在vim中为以标准大写形式编写的常量添加一些语法着色:

HELLO_WORLD
_GOOD_BYE_WORLD

当我转到http://regex101.com/时,我可以将这些与以下内容相匹配:

/(_*[A-Z]+_*)+

但是使用vim它并不匹配任何东西。

/ _将匹配单个下划线但/ _ *将不匹配多个下划线,它匹配每个字符。在阅读了一些vim正则表达式文档(http://vimdoc.sourceforge.net/htmldoc/pattern.html)后,似乎下划线用于跨行扩展匹配。但是,文档中列出的所有模式都使用\ _(转义下划线)而不是字符。

如何匹配此表单的单词?

为什么_ *匹配每个角色?

3 个答案:

答案 0 :(得分:2)

Vim的正则表达式略有不同,有些关键字符需要转义,例如{{1and1}},这里是你为vim格式化的正则表达式

+

有关详细信息,请访问http://vimregex.com/

答案 1 :(得分:2)

你也可以使用vim的魔术选项\ v

/\v(_*[A-Z]+_*)+

http://vim.wikia.com/wiki/Simplifying_regular_expressions_using_magic_and_no-magic

答案 2 :(得分:2)

我认为\<[_A-Z]\+\>会做你想做的事。

接受的答案是匹配小写字母中包含的下划线和大写字母。