vim 之 模式匹配



原文   http://man.chinaunix.net/newsoft/vi/doc/usr_27.html#usr_27.txt


(一) 偏移


/expr/N       按行偏移,偏移 N行。  N可以为 +- 数, 下同。


/expr/bN    按字符偏移,从匹配开始(begin)算起

/expr/eN    按字符偏移,从匹配末尾(end)算起


(二) 非贪婪匹配


匹配尽可能少的字符

迄今为止,我们所讨论过的都试图匹配尽可能多的字符。若要匹配尽可能少的字符,请
用 "\{-n,m}"。它的用法跟 "\{n,m}" 一样,唯一的区别在于,它采用尽可能少的字符。
   例如,以下命令:

        /ab\{-1,3}

将匹配 "abbb" 中的 "ab"。实际上,因为没理由匹配更多,所以它永远不会匹配超过一个 b。它需要其它的来强制它超过其下限规定次数,而匹配更多的重复。
   这些同样的规则也适用于省略 "n" 和 "m" 的情形。甚至可以把两个都省略,只剩"\{-}"。这个项匹配其前项的重复,重复次数尽可能少,可以等于或大于零。
 
    这个项如单独使用,则总是匹配前项的零次重复。当它跟与其它的模式合起来时,用处就大了。 例如:

        /a.\{-}b

这个命令匹配 "axbxb" 中的 "axb"。


(三)   多择一

在一个查找模式中,"或" 运算符是 "\|"。例如:
        /foo\|bar
这个命令匹配了 "foo" 或 "bar"。
 
更多的抉择可以连在后面:
        /one\|two\|three
匹配 "one","two" 或 "three"。

   如要匹配其多次重复,那么整个抉择结构须置于 "\(" 和 "\)" 之间:
        /\(foo\|bar\)\+
   这个命令匹配 "foo","foobar","foofoo","barfoobar",等等。
再举个例子:
        /end\(if\|while\|for\)
 这个命令匹配 "endif","endwhile" 和 "endfor"。


(四)  匹配换行符
Vim 能找寻含有换行符的模式。你需要指定换行符在哪儿出现,因为迄今为止所有我们曾经提到过的项,都不匹配换行符。
   用 "\n" 项可以在一个特定的位置查验一个换行符:
        /the\nword
  这个命令将在一行以 "the" 结尾,而下一行以 "word" 开头的地方找到匹配。
 
如果还要匹配 "the word",那么你需要匹配一个空格或一个换行符。这可以用 "\_s" 表示:
        /the\_sword

若要允许任意数量的空格:
        /the\_s\+word

这个命令也匹配 "the  " 在行尾,及 "   word" 在下一行行首的情形。

"\s" 匹配空格字符,"\_s" 匹配空格字符或一个换行符。同理,"\a" 匹配一个字母字
符,而 "\_a" 匹配一个字母字符或一个换行符。其它字符类和字符域都可以通过插入一个 "_" 来更改其范围。

很多别的项也可以在前面加 "\_" 以匹配一个换行符。例如: "\_." 匹配任意字符或一个换行符。


原文:  http://man.chinaunix.net/newsoft/vi/doc/pattern.html#%2F[]



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值