免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2207 | 回复: 7
打印 上一主题 下一主题

求教个VIM里的正则表达的问题~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-04-06 20:04 |只看该作者 |倒序浏览
鄙人菜鸟一只,诚心求教:

^$\n

^\n$

\n^$

有什么区别?
在VIM里消除文件空行时,三个操作的结果不一样。

求高人解答~谢谢。

论坛徽章:
0
2 [报告]
发表于 2011-04-06 20:54 |只看该作者
^ 匹配行首
$ 匹配行尾
\n 换行符
:%s/^$\n//g 删除空白行,下一行往前移(最后一行是空白行的除外,没有换行符)
:%s/^\n$//g 删除相邻n行空白行的n-1行(贪婪匹配)
:%s/\n^$//g 删除下一行的空白行

最好弄个文件试试,我也是刚试过的

论坛徽章:
0
3 [报告]
发表于 2011-04-06 22:31 |只看该作者
先谢谢你的回复。

其实我想知道三者各自的匹配过程(原理),

感觉自己也许是有点受单行匹配的思维影响了。总要想着$后边不可能会有任何东西了,^前边也可能不会有任何东西出现。

可能问题还是有点没说明白。
不过,如果不上机实践,我真的是不会分析这三个东西,也不会想出结果是什么样的。
问题就是在这,继续求高人解答。

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
4 [报告]
发表于 2011-04-06 23:08 |只看该作者
见 perlre
By default, the "^" character is guaranteed to match only the beginning of the string, the "$" character only the end (or before the newline at the end), and Perl does certain optimizations with the assumption that the string contains only one line. Embedded newlines will not be matched by "^" or "$". You may, however, wish to treat a string as a multi-line buffer, such that the "^" will match after any newline within the string (except if the newline is the last character in the string), and "$" will match before any newline. At the cost of a little more overhead, you can do this by using the /m modifier on the pattern match operator.

论坛徽章:
0
5 [报告]
发表于 2011-04-06 23:16 |只看该作者
见 perlre
zhlong8 发表于 2011-04-06 23:08



    那 \n^$  和 ^$\n 该如何解释?

论坛徽章:
0
6 [报告]
发表于 2011-04-07 10:18 |只看该作者
那 \n^$  和 ^$\n 该如何解释?
smallest10 发表于 2011-04-06 23:16


两个的效果应该是一样的,但替换的时候\n^$是把上一行的换行符和本行的空行给替换掉,^$\n 是把本行的换行符和空行给替换掉

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
7 [报告]
发表于 2011-04-07 10:37 |只看该作者
那 \n^$  和 ^$\n 该如何解释?
smallest10 发表于 2011-04-06 23:16



    理解为后半部分说的多行模式 /m

论坛徽章:
0
8 [报告]
发表于 2011-04-07 11:48 |只看该作者
明了了,谢谢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP