Chinaunix首页 | 论坛 | 博客
  • 博客访问: 101950
  • 博文数量: 20
  • 博客积分: 1404
  • 博客等级: 中尉
  • 技术积分: 210
  • 用 户 组: 普通用户
  • 注册时间: 2007-01-02 15:40
文章分类

全部博文(20)

文章存档

2012年(1)

2009年(1)

2008年(8)

2007年(10)

我的朋友

分类: LINUX

2008-06-28 16:06:57

正则表达式一般用来匹配文件中的特定文本,但需要配合其他工具使用.
1.例子 egrep '^(abc|def):' file
   ^用来表示一行的开头,()内部是多选结构,|表示或的意思,:则只代表:这个字符,单引号限定范围,以避免shell把引号内部的正则表达式当命令执行,file则表示要搜索队文件.
    综合起来,上面的例子表示: 在file这个文件中,搜索每一行,碰到行的开头是abc:或def:的,就打印出来.

2.例子 egrep '^[abcdef]:' file
    ^用来表示一行的开头,[]内部是字符组,与()不同,[]内部每个字符都表示一个待匹配目标,此例中,即分别匹配a,b,c,d,e,f这六个字符.
    综合起来,上面的例子表示: 在file这个文件中,搜索每一行,碰到行的开头是a,b,c,d,e,f这六个字符其中一个,就打印出来.

3.( | ) 与 [ ]  的 区别
(str1|str2)         匹配str1或str2其中一个.
[ABCD]              匹配A,B,C,D其中一个.
[A-Za-z0-9_!.?]     匹配A到Z,a到z,0到9,以及_!.?四个字符中的一个.
H(str1|str2)        匹配Hstr1或Hstr2其中一个.
H[A-Za-z0-9_!.?]    匹配H后接A到Z,a到z,0到9,以及_!.?四个字符中的一个.

综合来说,[]内只匹配其中一个字符,(|)内匹配|两边的任意一个字符串.

4.^的不同位置的区别
在[]外部,^表示一行的开头,在[]内部,^表示排除后面接的字符,如:
^[abc] 匹配以a,b,c开头的每一行
[^abc] 匹配除a,b,c之外的每一个字符,但不包括空格
[^ ]   匹配除空格外的任何一个字符
(^str1|str2|str3)   匹配一个以str1开头的行,或包含str2的行,或包含str3的行
(^str1|^str2|^str3)  匹配以str1或str2或str3开头的行

5.^及$
^在一般匹配一行的开头(或用来作为排除型字符),$匹配一行的结尾
^cat$         行开头,然后是cat,再然后是行结尾,即只包含cat的行
^cat          行开头,然后是cat,即以cat开头的行
cat$          cat,然后是行结尾,即以cat结尾的行
^             行开头,这个没什么意义,因为每行都有开头
$             同上
^$            行开头,然后是行结尾,匹配一个空行

6.一些元字符
.号用来匹配任意字符,\.则表示只匹配.这个字符.
-号用来表示一个范围,如0-9就表示0到9,\-则只表示匹配-这个字符

在[]字符组内部,如果-在第一个位置,则不表示连字符,只匹配-这个字符,如果^在第一位,则表示排除型字符,如果^不在第一位,或\^,则只匹配^这个字符.

7.单词分界符(egrep)
\<    匹配单词的开头
\>    匹配单词的结尾
'\'b\>'     以b结尾的单词
'\<3.*7\>'    以3开头,中间有若干字符,以7结尾的单词(无意义,因为.可以匹配空格)

单词分界符在不同的工具里,有不同的表示,egrep中以"\<和\>"表示,perl中用"\b"表示

8.?可选项元素
?号用来匹配一个可有可无的字符,如:egrep?可以匹配egre或egrep,即这个?表示,他前面的p可有可无.
e(grep)?   匹配e或egrep,即这个grep可有可无
ma(x|sh)?  匹配ma或max或mash
ma[a-z]?   匹配ma或ma[a-z]

9.量词*和+
(str)*    匹配0个或多个str,即*号匹配前面的字符串,可以匹配0个或多个,最少匹配0个
(str)+    匹配1个或多个str,即+号匹配前面的字符串,可以匹配1个或多个,最少匹配1个

e(a)*     匹配e或ea或eaaaaaaa,即*可以匹配0个a,或N多个a
e(a)+     匹配ea或eaaaaa,但不匹配e,即+可以匹配1个a,或N多个a,必须匹配一个

e *       匹配0个或多个空格
e +       匹配1个或N个空格

10.区间
(str){min,max}  匹配最少min个str,最多max个str

e{1,5}    匹配e或ee或eee或eeee或eeeee
11.一些特殊的元字符
\s:用于匹配单个空格符,包括tab键和换行符;
\S:用于匹配除单个空格符之外的所有字符;
\d:用于匹配从0到9的数字;
\w:用于匹配字母,数字或下划线字符;
\W:用于匹配所有与\w不匹配的字符;
. :用于匹配除换行符之外的所有字符。
\s+       匹配一个或多个空格,tab或换行符
















\S+       匹配一个或多个空格以外的字符
\d\d\d    匹配3个数字
\w+       匹配一个或多个字母,数字或下划线,如abc_11就可以匹配
\W+       匹配一个或多个非字母数字及下划线
.+        匹配一个或多个除换行符之外的字符
 
阅读(1721) | 评论(0) | 转发(0) |
0

上一篇:debian 4 install bind 9.5

下一篇:TSM 版本控制

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