vim匹配中一个表达式的疑问

Vim、Emacs配置和使用
回复
ps3wifi
帖子: 94
注册时间: 2010-01-08 13:09

vim匹配中一个表达式的疑问

#1

帖子 ps3wifi » 2020-02-18 15:35

hiwifasdfafdadfadfadfadfasdfasdfafz
hawbfi[mtk]
htestteststesetsdfdz
在vim匹配查找中用/h\w\w\+\xz可以查到两个最长的字符串,我给的条件是h开头中间两个\w是匹配任意数字和字母,那个加号\+看网上教程说是匹配任意1-,就是加号还没弄清楚是什么意思,然后奇怪的是加号后再加条件\mz \xz \wx \fz为什么都能匹配到两个最长字符串,/dz /jz又匹配不到,烦请各位大佬给我这个菜鸟讲解一下,


[abc]
[ ]
另外再问一个vim匹配问题,怎么才能直接匹配右括号,按照教程匹配规则因为括号有字符,必须要/[/s或者/[...]才能匹配到,能不能用什么表达式可以直接匹配到右括号
感谢感谢!
附件
vim匹配问题.JPG
头像
astolia
论坛版主
帖子: 6454
注册时间: 2008-09-18 13:11

Re: vim匹配中一个表达式的疑问

#2

帖子 astolia » 2020-02-18 19:33

既然用到了,那就去专门系统地学一下正则表达式吧,那个正则表达式30分钟入门教程就挺好的
虽然vim用的正则有一些自己的实现,但基本概念还是一致的
ps3wifi 写了: 2020-02-18 15:35 然后奇怪的是加号后再加条件\mz \xz \wx \fz为什么都能匹配到两个最长字符串,/dz /jz又匹配不到
需要稍微提一下vim自己的东西
\m:并不匹配具体的字符,而是代表启用magic模式,具体在vim中用:help \m可以查看自带帮助
\x:匹配十六进制字符,即[0-9a-zA-Z]
\f:匹配可以用在文件名中的字符,具体在vim中用:help \f可以查看自带帮助
至于\j由于没有这个转义,所以匹配的是字符j

其他的疑问看完教程应该都能明白
ps3wifi
帖子: 94
注册时间: 2010-01-08 13:09

Re: vim匹配中一个表达式的疑问

#3

帖子 ps3wifi » 2020-02-18 21:51

astolia 写了: 2020-02-18 19:33 既然用到了,那就去专门系统地学一下正则表达式吧,那个正则表达式30分钟入门教程就挺好的
虽然vim用的正则有一些自己的实现,但基本概念还是一致的
ps3wifi 写了: 2020-02-18 15:35 然后奇怪的是加号后再加条件\mz \xz \wx \fz为什么都能匹配到两个最长字符串,/dz /jz又匹配不到
需要稍微提一下vim自己的东西
\m:并不匹配具体的字符,而是代表启用magic模式,具体在vim中用:help \m可以查看自带帮助
\x:匹配十六进制字符,即[0-9a-zA-Z]
\f:匹配可以用在文件名中的字符,具体在vim中用:help \f可以查看自带帮助
至于\j由于没有这个转义,所以匹配的是字符j

其他的疑问看完教程应该都能明白
谢谢版主的解答,正在学习正则表达式,再咨询一下如果我真的是匹配m不是要进入magic模式,这个应该怎么转义为m字符
头像
astolia
论坛版主
帖子: 6454
注册时间: 2008-09-18 13:11

Re: vim匹配中一个表达式的疑问

#4

帖子 astolia » 2020-02-19 14:38

ps3wifi 写了: 2020-02-18 21:51 谢谢版主的解答,正在学习正则表达式,再咨询一下如果我真的是匹配m不是要进入magic模式,这个应该怎么转义为m字符
建议先弄清楚“转义”的含义
回复