Chinaunix首页 | 论坛 | 博客
  • 博客访问: 304181
  • 博文数量: 58
  • 博客积分: 2763
  • 博客等级: 少校
  • 技术积分: 731
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-04 19:07
文章分类

全部博文(58)

文章存档

2011年(55)

2009年(1)

2008年(2)

分类: LINUX

2011-07-24 09:49:24

1.有人可能对正则表达式的向后引用(就是小括号的用法)不是很了解,或许也很迷茫。下面我来补充一下向后引用。
向后引用就是匹配表达式先前的部分。首先将要写的表达式写在\(与\)里,单个模式可包括至多9个表达式,且可为嵌套结构,今天我们不说很复杂的。直说简单的,让你可以接受的。然后在同一模式之后,使用\数字,数字是介于1-9的,表示匹配第几个先前括号里的内容。说这些你可能还是不是很清楚,那我就来举几个例子说明一下吧。
   模式                                                         成功
\(ab\)\(cd\)[def]*\2\1                abcdcdab,abcdeeecdab,abcdddeeffcdab,abcddefdefdefcdab
这个你能看懂吗?
匹配前面是abcd,中间表示为匹配“d、e、f”三个字母中重复任意一个字母出现0次或无穷多次,后面“\2”表示匹配先前第二个括号的内容,也就是cd。“\1”就表示匹配先前第一个括号的内容,也就是ab。
这样上个例子中匹配成功的内容我想你也明白了吧。
再例如:\(["']\).*\1  ,就表示匹配以单引号或双引号引起来的字,如:'food'或"panda"
这下你明白向后引用的用法了吗?
2.下面我再来说一下有关^和$ 的一些说明
例如我写一个文件,内容为:
abcABCdefDEF
abcabcDEFdef
aaaABCdeDEFDEF
ABCaaaaaaDef
aBcabcdefdefdefDEf
模式                           是否匹配                 成功
ABC                              是                     abcABCdefDEF
                                                        aaaABCdeDEFDEF
                                                        ABCaaaaaaDef
^ABC                             是                     ABCaaaaaaDef
def                              是                     abcABCdefDEF
                                                        abcabcDEFdef
                                                        aBcabcdefdefdefDEf
def$                             是                     abcabcDEFdef
[[:upper:]]\{3\}                 是                     abcABCdefDEF
                                                        abcabcDEFdef
                                                        aaaABCdeDEFDEF
                                                        ABCaaaaaaDef
^[[:upper:]]\{3\}                是                     ABCaaaaaaDef
[[:upper:]]\{3\}$                是                     abcABCdefDEF
                                                        aaaABCdeDEFDEF
^[[:upper:]]\{3\}$               否                     无
现在知道行首定位符,与行尾定位符的应用了吧!
好了,先补充这两点吧,如果你有疑问的话,请给我留言。
 
                                                  
 
 
阅读(1576) | 评论(0) | 转发(0) |
0

上一篇:补充

下一篇:sed和awk的简单使用

给主人留下些什么吧!~~