欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

vim正则的非贪婪模式 博客分类: linux  

程序员文章站 2024-03-19 11:16:52
...

vim中\{-}与*?相同 

所以vim的非贪婪模式为 .\{-}相当于其他的.*?

 

:set magic             " 设置magic
:set nomagic           " 取消magic
:h magic               " 查看帮助

 

  • magic (\m):除了 $ . * ^ 之外其他元字符都要加反斜杠。
  • nomagic (\M):除了 $ ^ 之外其他元字符都要加反斜杠。
  • 这个设置也可以在正则表达式中通过 \m \M 开关临时切换。 \m 后面的正则表达式会按照 magic 处理,\M 后面的正则表达式按照 nomagic 处理, 而忽略实际的magic设置。

    例如:

    /\m.*          # 查找任意字符串
    /\M.*          # 查找字符串 .* (点号后面跟个星号)

    另外还有更强大的 \v 和 \V。

    • \v (即 very magic 之意):任何元字符都不用加反斜杠
    • \V (即 very nomagic 之意):任何元字符都必须加反斜杠

    例如:

    /\v(a.c){3}$   # 查找行尾的abcaccadc
    /\m(a.c){3}$   # 查找行尾的(abc){3}
    /\M(a.c){3}$   # 查找行尾的(a.c){3}
    /\V(a.c){3}$   # 查找任意位置的(a.c){3}$

    默认设置是 magic,vim也推荐大家都使用magic的设置,在有特殊需要时,直接通过 \v\m\M\V 即可。

    本文下面使用的元字符都是 magic 模式下的。

vim的量词与perl相比一点也不逊色。

vim Perl 意义
* * 0个或多个(匹配优先)
\+ + 1个或多个(匹配优先)
\? 或 \= ? 0个或1个(匹配优先),\?不能在 ? 命令(逆向查找)中使用
\{n,m} {n,m} n个到m个(匹配优先)
\{n,} {n,} 最少n个(匹配优先)
\{,m} {,m} 最多m个(匹配优先)
\{n} {n} 恰好n个
\{-n,m} {n,m}? n个到m个(忽略优先)
\{-} *? 0个或多个(忽略优先)
\{-1,} +? 1个或多个(忽略优先)
\{-,1} ?? 0个或1个(忽略优先)