2013-03-26 70 views
-2

我试图使用vim的正则表达式引擎的语法高亮@没有任何字,例如像这样与其相邻的字符,:非单词字符vim的

The @ matches 
[email protected] not match. 

我要么匹配所有@s还是我只有匹配@与空白周围(意思是在行首不匹配)

看来vim并不真正遵循正则表达式的标准,这是非常严格的,这在编写语法文件时很令人沮丧。

+3

向我们展示您尝试的正则表达式。 – Tuxdude 2013-03-26 20:37:13

+1

Vim的正则表达式语法直接从ed的语法中继承,因此早于任何创建“标准”的企图。 – romainl 2013-03-26 20:37:16

回答

3

我觉得vim中的正则表达式真的是powerfu l,即使有时语法有点奇怪。这条线

@ foo 
foo @ bar 
foo @ 
[email protected] 

:(由/(搜索领先))

/\v(^|)\zs\@\ze($|) 

匹配1-3线的@,但不是第四线

给定以下作为示例的输入。

您可以考虑使用\s而不是space

+1

这里使用了vim的一些正则表达式语法的一些解释:'\ v'打开“非常神奇”,这使得正则表达式语法看起来类似于perl的正则表达式语法,因为它减少了转义量。 '\ zs'标记匹配的开始,'\ ze'标记匹配的结束。如需更多帮助,请参阅':h/\ v',':h/\ zs'和':h/\ ze' – 2013-03-26 22:16:27

+0

@PeterRincker感谢您的评论/解释 – Kent 2013-03-27 00:39:57

相关问题