正则表达式点滴
时间:2005-07-14 来源:zhousqy
一些正则表达式的基础东西。。。
1:匹配确定数量的字符:{...}
例如:X{1,10} 匹配1到10个X
[A-Za-z]{4,7} 匹配4到7个字符长的一个字母表序列
如果括号内只有一个数字,如: {10}则表示前导的正则表达式必须被精确匹配10次。
例如:[a-zA-Z]{7} 精确匹配7个字母表中的字符
2:保存匹配的字符集:(...)
例如:^(.) 匹配行上的第一个字符,然后保存到寄存器1中。
要得到保存到特定寄存器中的字符可以用 , n可以从1-9,表示1到9,9个寄存器。
再举两个例子来巩固一下:
i) ^(.).*1$ 匹配所有首字符和最后一个字符相同的行
ii) 假设有如下电话簿文件
Alice Chebba 973-555-2015
Barbara Swingle 201-555-9257
Liz Stachiw 212-555-2298
Susan Goldberg 201-555-7776
Tony Iannino 973-555-1295
则运行语句:1,$s/(.*) (.*)/2 1/
就可以把每条记录的姓名和号码位置互换,文件就变成下面的样子
973-555-2015 Alice Chebba
201-555-9257 Barbara Swingle
212-555-2298 Liz Stachiw
201-555-7776 Susan Goldberg
973-555-1295 Tony Iannino
要在windows的编辑器中实现上面的功能,我还找不到好的方法,而在UNIX/LINUX下
只要用小小的行编辑器ed就可以轻松搞定。