正则表达式 - vim中怎样匹配中括号对
phpcn_u1582
phpcn_u1582 2017-05-16 16:41:46
[PhpStudy讨论组]

好像是用\[匹配[,用]匹配],我用\[*]可以匹配到中括号对,但是a\[*]并不能匹配到有a在前面的括号对(数组a),而用a\[却可以匹配到a和a后面的左中括号,为什么?

phpcn_u1582
phpcn_u1582

全部回复(2)
高洛峰
\[*]匹配的是0到多个[,后面是一个],例如],[],[[]等
中间的*匹配的[,并不是指中括号中间的任意字符重复0-N次。

中括号中间的任意字符,简单的话可以使用.*表示,但是同一行有多个中括号的话会全部匹配,如:
a[i+1]= b[i-1]这样的表达式会被全部匹配。

试一下下面这个,应该可以匹配a后面的带中括号的表达式
a\[[^]]*]   
黄舟

我测试结果是 a\[*] 可以匹配到 a[]。当然它不能匹配 a[i]

不过,你确定要用 * 吗?你的「好像」让我很有给你正则表达式的教程的冲动……

[...] 是用来匹配字符类的,比如 [abd] 匹配 a, b 或者 d 中的任何一个。因为 [] 已经有这个意思了,所以要匹配到 [ 字符需要转义 \[,要匹配 ] 的话原则上也是要转义的 \],不过在不引起歧义的时候可以不转义。

* 是一个量词,它表示前边那个字符(或者字符类字符组)可以出现任意多次(0 次也算)。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号