Vim正则表达式中方括号内的元字符

17

在vim正则表达式中,如何搜索元字符或其他字符?

示例:(我希望它匹配元字符'\w'或字符“-”1次或多次)

[-\w]\+
但是这个正则表达式并没有像我希望的那样工作。它只匹配-, w和.我尝试转义'\',但那并不起作用。
我已经查看了vim文档,但没有这方面的示例。

另外顺带一提,我知道我可以做类似[-a-zA-Z]+的事情。但我不想要那种解决方案。我对括号内的元字符感兴趣。 - ostler.c
1
+1 用于提出我经常思考的问题! - Prince Goulash
3个回答

14
在一个集合中,你需要使用特殊的字符类。下面的表达式与你的表达式等价:
[-_[:alnum:]]\+

检查:h [:alnum:](以及随后的行)以获取支持的类的完整列表。


如果你在处理ASCII,那么[-_A-Za-z]确实更简单。 - sidyll
你提供的模式与问题中要求的模式不相等。相等的模式是[-_[:alnum:]]\+(参见:h \w:h alpha)。 - ib.
抱歉 @ib,感谢您指出。确实在引用帮助时我写了正确的类但放错了位置。 - sidyll

4
\%(\w\|-\)*

使用\%(组,以便不捕获任何内容。使用\|\w-之间进行选择。
或者使用非常魔法的方式,使用\v
\v%(\w|-)*

这非常有帮助,但是它没有括号内的元字符。 - ostler.c
它们是等价的。例如,\%(a\|b\|c\)\+[abc]\+ 是相同的。如果你说你需要使用 [^...] 那就完全不同了。我的想法是使用任何等效的方式来节省你的打字和/或大脑能量。 - Peter Rincker

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接