vim非贪婪匹配 - 正则表达式




无法匹配Vim中的一个或多个空格 (6)

我希望在Vim的行开头有匹配空格

PseudoCode我想做什么

^( )*

我从手册中了解了以下内容

notation        meaning             equivalent  decimal value(s)        
-----------------------------------------------------------------------

<Space>         space                            32     *space* 

我不知道如何使用十进制值32。

你怎么能匹配Vim中的一个或多个空格?


Vim行开头的空格:

/^  *

那是:

  • '/'搜索。
  • '^'表示行首。
  • ' '至少有一个空间。
  • ' *'之后为零或更多空格。

/ *匹配零个或多个空格。

例:

/foo *bar将匹配foobarfoo bar ,foo bar , etcetera`。

请注意,如果要在示例中使用括号,则需要使用\\转义它们。 Vim表达式不是标准的Perl正则表达式,也不是POSIX正则表达式。 你的例子是:

\\( \\)*

如果您希望匹配任何类型的空格(无论是空格还是制表符),则以下正则表达式适用

^[\s]*

^匹配行的开头
[\s] / [\t]匹配空格或制表符(两者似乎都有效,但根据vim文档你应该使用[\s]
*提供重复,0或更多。

当然使用其他人提到的/搜索。


如果我理解正确..

/ *将匹配0或更多空格

/ {0,n}将匹配0到n个空格(其中n是数字)

要从行首开始匹配1个或多个空格:

/^ \+

打字

/^ \+

在命令模式下,将匹配行开头的一个或多个空格字符。

打字

/^\s\+

在命令模式下,将在一行的开头匹配一个或多个空格字符(制表符等以及空格)。


要匹配行开头的空格或制表符,您还可以使用: ^\s*





vim