Regex Vim正则表达式是否匹配选项卡或空格?

Regex Vim正则表达式是否匹配选项卡或空格?,regex,vim,Regex,Vim,我想修剪以下字符串: PACKAGE MAIN(字符串以制表符空格开头) 目标是只获取包MAIN作为输出 我尝试了以下带有参数的VIM函数 let line = substitute (line, '\t+(.*)' , '\1', 'g') let line = substitute (line, '\t+\(.*\)' , '\1', 'g') let line = substitute (line, '\t\+\(.*\)' , '\1', 'g') let line

我想修剪以下字符串:

PACKAGE MAIN
(字符串以制表符空格开头)

目标是只获取
包MAIN
作为输出

我尝试了以下带有参数的
VIM
函数

let line = substitute (line, '\t+(.*)'      , '\1', 'g')
let line = substitute (line, '\t+\(.*\)'    , '\1', 'g')
let line = substitute (line, '\t\+\(.*\)'   , '\1', 'g')
let line = substitute (line, '[\s\t]+\(.*\)', '\1', 'g')
(还有更多)


VIM
regex在
substitute
函数中匹配
(空白)字符的指导原则是什么?

稍微修改最后一个:

substitute (line, '[ \t]\+\(.*\)', '\1', 'g')

+
必须在
\
前面加上前缀才能获得神奇的含义。您可以对任何空格使用
\s
,而不是只匹配空格和制表符的
[\t]

您能给我们举一个例子说明
包MAIN
实际上可能是什么吗?@TimBiegeleisen:使用
包MAIN
字符串,正则表达式应该只返回
包MAIN
-(一个微调函数)有多少个带有软件包名称的单词?标记包名称结尾的字符是什么?您的问题中没有提到这一点。@TimBiegeleisen:我试图使我的问题更一般化,因为我想了解vim regex指南。。对于您的问题,该行可能以任何空格开头,以(新行)结尾。沿着这些行可能会起作用:
:%s/\t\(.*)/\1/g
。我使用may是因为我们不知道如何在正则表达式中识别包名的结尾。当我在替换后打印新行时,我得到了
^I^IPACKAGE MAIN
-该
^I
的含义是什么,我如何删除它?我的错误是使用了
代替
函数调用中的
。一旦切换到
(包装参数)-该方法完全按照您所说的那样工作。。。
是否控制正则表达式的行为?@NirMH:No,在
中,``字符转义字符串中的字符,因此在结尾,正则表达式根本不包含反斜杠。