[0-9]* (-)?[0-9]* q
这个正则表达式似乎不适用于vim下面的文本
34778965 -1 q这里的一些文字
[解决]
谢谢!我意识到这一切都必须逃脱。感觉不一致的是一些需要像\一样被逃脱的?但有些不是,比如*或$。 vimregex.com帮忙。
答案 0 :(得分:3)
您可以使用\d
表示vim正则表达式中的数字。
您的文字的好模式将是
\d\+ -\? \d\+ q
通常,vim假定字符为字面字符。所以,如果你给\d+
,它将被理解为任何数字后跟一个加号。因此,您必须在模式中转义此类正则表达式特定字符。
答案 1 :(得分:1)
在Vim中,您需要转义一些常见的正则表达式特殊字符,以便它们充当特殊运算符。例如。 (-)
组必须以\(-\)
非神奇模式编写。在非常神奇的模式下,您的模式将按原样运行 - :%s/\v[0-9]* (-)?[0-9]* q/replace/g
在您的情况下,您根本不需要分组,因为您在括号内量化了一个连字符,因此可以删除它们:
[0-9]* -\? [0-9]* q