vi 中的正则表达式 (Regular Expression)(转)

vi 中的正则表达式 (Regular Expression)(转)[@more@].1. 定义和例子
============
正则表达式只是一个字符模板,用来在搜索中匹配相同的字符.
在大多数的程序中,正则表达式是括在正斜杠中间的.
例如, /love/就是一个以正斜杠为分隔符的正则表达式,其中的
模板love 将用在搜索所有行中与它匹配的字符. 更为有趣的是
正则表达式可以被特殊的元字符控制.让我们通过下面的例子来进
一步了解这个概念.
有文本如下:
Hi tom,
I think I failed my anatomy test yesterday. I
had a terrible stomach ache. I ate too many
fried green tomatoes.
Anyway, Tom, Ineed your help. I'd like to make
the test up tomorrow, but don't know where to
begin studying. Do you think you could help me?
After work, about 7 PM, come to my place and I'll
treat you to pizza in return for your help.
Thanks.
Your pal,
guy@phantom

假设你发觉Tom 并没有参加考试,而是David 参加的考试.同时还
发现, 在贺信中Tom的T用的是小写.于是你决定做一个全文替换,把tom
替换为Tom.

在vi命令行模式下输入:
:1, $s/tom/David/g
^ ^ ^ ^ ^
| | | | |---- global 对全文有效
| | | |
| | |--------- 将tom 替换为 David , 使用正则表达式.
| |------- 替换单词
|------ 从文件的第一行到文件的最后一行.

替换后的文本如下:
Hi David,
I think I failed my anaDavidy test yesterday, I
had terible sDavidach ache. I ate too many
fried green Davidatoes.
Anyway, David, I need your help. I'd like to make
the test up Davidorrow, but don't know where to
begin studying. Do you think you could help me?
After work, about ? PM, come to my place and
I'll treat you to pizza in return for your help.
Thanks.
Your pal,
guy@phanDavid

我们发现有些单词中含有tom的的也被替换了.
这是因为我们没有使用正则表达式的元字符来界定一个模板从而控制
字符的替换动作.
使用:
:1, $s//David/g
就可以得到我们想要的结果了,即只替换单词tom而不是含有tom字符的
单词.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10617731/viewspace-961648/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10617731/viewspace-961648/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值