vim正则的非贪婪模式
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个(忽略优先) |
相关推荐
lerdor 2020-10-14
linzb 2020-09-22
HeronLinuxampARM 2020-09-14
CoderMannul 2020-09-07
lerdor 2020-08-31
ZZBAIFFA 2020-08-31
yonggeno 2020-08-18
yhuihon 2020-08-17
涅磐 2020-08-11
yhuihon 2020-08-09
zhangxl0 2020-07-28
yhuihon 2020-07-26
想个标题偏头痛 2020-07-19
老甘的可读区 2020-07-18
linzb 2020-07-18
xlb 2020-07-12
老甘的可读区 2020-07-09
極愛 2020-07-06