Chinaunix首页 | 论坛 | 博客
  • 博客访问: 695861
  • 博文数量: 160
  • 博客积分: 8847
  • 博客等级: 中将
  • 技术积分: 1656
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-25 16:46
个人简介

。。。。。。。。。。。。。。。。。。。。。。

文章分类

全部博文(160)

文章存档

2015年(1)

2013年(1)

2012年(4)

2011年(26)

2010年(14)

2009年(36)

2008年(38)

2007年(39)

2006年(1)

分类: 系统运维

2011-04-10 16:57:35

正则表达式:
元字符(metacharcter)
\b 表示一个位置,通常用来界定一个单词的范围\bhi\b
\B 非字母开头和结尾
. 表示一个字符,除换行符以外
\d 表示一个数字字符
\D 表示非数字字符
\s 表示不可见的空格、制表符tab,或者换行符、中文全角字符
\S 表示非空白符
\w 表示字母、数字或者下划线
\W 表示非字母、数字或者下划线
^x 表示x开始
[^x] 表示非x开始
x$ 表示x结尾

重复(粘帖前一个字符或者组)
+ 表示1个或者多个
? 表示0个或者一个
* 表示0个或者多个
{n} 表示n个
{n,} 表示至少n个
{n,m} 表示至少n个,但不超过m个

() 表示一个分组,分组从1开始,用\1,\2 ...表示
[] 表示其中或者一个范围中之一  [ac\d] 表示一个a或者c或者一个数字,[a-zA-Z0-9]表示a-z或者A-Z或者0-9之一
{} 表示粘帖的前一个字符或者分组的次数
|  表示或者,分支条件 0\d{2,3}-\d{7,8}

常见实例:
ip地址:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$
单词分割:
/^[\p{L}\p{N},]+$/u 匹配任意unicode字符,中间用英文逗号(,)分割
email:
^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2,3}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$
链接:
]*href=\"[^\s\"]+\"[^>]*>[^<]*<\/a>
URL:
^([a-z]+:\/\/)?([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}[0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(:[0-9]{1,5})?(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&]*)?)?(#[a-z][a-z0-9_]*)?$

练习:
[root@ /UNIX]# sed -n '/^$/p' re > re.txt
[root@ /UNIX]# cat re.txt
1 Which of the following matches regexp /a(ab)*a/

1)      abababa
2)      aaba
3)      aabbaa
4)      aba
5)      aabababa

2 Which of the following matches regexp /ab+c?/

1)      abc
2)      ac
3)      abbb
4)      bbc

3 Which of the following matches regexp /a.[bc]+/

1)      abc
2)      abbbbbbbb
3)      azc
4)      abcbcbcbc
5)      ac
6)      asccbbbbcbcccc

4 Which of the following matches regexp /abc|xyz/

1)      abc
2)      xyz
3)      abc|xyz

5 Which of the following matches regexp /[a-z]+[\.\?!]/

1)      battle!
2)      Hot
3)      green
4)      swamping.
5)      jump up.
6)      undulate?
7)      is.?

6 Which of the following matches regexp /[a-zA-Z]*[^,]=/

1)      Butt=
2)      BotHEr,=
3)      Ample
4)      FIdDlE7h=
5)      Brittle =
6)      Other.=

7 Which of the following matches regexp /[a-z][\.\?!]\s+[A-Z]/
(\s matches any space character)
1)      A. B
2)      c! d
3)      e f
4)      g.   H
5)      i?  J
6)      k L

8 Which of the following matches regexp /(very )+(fat )?(tall|ugly) man/

1)      very fat man
2)      fat tall man
3)      very very fat ugly man
4)      very very very tall man

9 Which of the following matches regexp /<[^>]+>/

1)     
2)     
3)     

4)      <>
5)     

解释及答案:
/a(ab)*a/ a后面跟0个或者多个ab,再跟一个a
abababa aba
/ab+c?/ ab后面跟任意多字符,再跟0个或者多个c
abc abbb
/a.[bc]+/ a后面跟一个任意字符,后面跟b或者c,再跟任意字符
abc abbbbbbbb azc abcbcbcbc asccbbbbcbcccc
/abc|xyz/ abc组合或者xyz组合
abc xyz
/[a-z]+[\.\?!]/ a到z中的任意一个字母,后面跟任意字符(不含空格回车),再跟一个.或者?或者!之一
battle! swamping. undulate?
/[a-zA-Z]*[^,]=/ 0个或者任意个大写或者小写字母,后面跟,号除外的字符,再跟一个=号
Other.= Butt=
/[a-z][\.\?!]\s+[A-Z]/ a到z中的一个字母,后面跟.或者?或者!之一,后面跟空格或者tab,再跟A到Z之一
g.   H
i?  J
/(very )+(fat )?(tall|ugly) man/ 1个或者任意个very 后面跟0个或者任意个fat ,后面跟tall或者ugly,后面跟一个空格,最后一个是man
very very very tall man
very very fat ugly man
/<[^>]+>/ <开始,后面跟1个或者任意个>除外的字符,最后跟一个>



阅读(1188) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~