Chinaunix首页 | 论坛 | 博客
  • 博客访问: 527293
  • 博文数量: 128
  • 博客积分: 4000
  • 博客等级: 上校
  • 技术积分: 1345
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-22 21:43
文章分类

全部博文(128)

文章存档

2009年(30)

2008年(98)

我的朋友

分类:

2008-04-23 13:16:13

正则表达式

  表7-1 基本元字符集及其含义
-----------------------------------------------------------------
^    只只匹配行首
$    只只匹配行尾
*    只一个单字符后紧跟*,匹配0个或多个此单字符
[]    只匹配[]内字符。可以是一个单字符,也可以是字符序列。可以使用-
   表示[]内字符序列范围,如用[1-5]代替[12345]
\    只用来屏蔽一个元字符的特殊含义。因为有时在s h e l l中一些元字符有
   特殊含义。\可以使其失去应有意义
.    只匹配任意单字符
pattern\{n\} 只用来匹配前面pattern出现次数。n为次数
pattern\{n,\}m 只含义同上,但次数最少为n
pattern\{n,m\} 只含义同上,但pattern出现次数在n与m之间
-----------------------------------------------------------------

1.使用句点匹配单字符
eg1:匹配权限:
$ ls -l | grep ^...x..x..x
查询文件开头为u,g,o都为可执行的文件

eg2:模糊查询文件名
查询文件名为: M*il
$ ls -l | grep M*il

2.在行首以^匹配字符串或字符序列
eg1:匹配目录
$ ls -l | grep ^d

eg2:混合匹配,查询以名称comp**ing开头的文件
$ ls | grep ^comp..ing

3.在行尾以$匹配字符串或字符
eg1:以ail结尾的所有行
$ ls | grep ail$

4.使用*匹配字符串中的单字符或其重复序列
eg1:
$ ls | grep M*l
Mail

5.使用\屏蔽一个特殊字符的含义
特殊字符: $ . ' " * [ ] ^ | ( ) \ + ?
\.不认为反斜杠后面的字符是特殊字符,而是一个普通字符,即句点。

如果要在正则表达式中匹配以*.pas结尾的所有文件,如下:
\*\.pas

eg1:查询以.lic结尾的文件
$ ls | grep \.lic$

6.使用[]匹配一个范围或集合
匹配任意一个数字,简化
[0-9],当然可以[0123456789]
任意小写字母[a-z]
任意字母[a-zA-Z]
任意字母或数字[a-zA-Z0-9]
匹配所有单词:[a-zA-Z]*

注意:^符号的使用,当直接用在第一个括号里,意指否定或不匹配括号里的内容
[^a-zA-Z] 匹配任一非字母型的字符
[^0-9] 匹配任一非数字型的字符

7.使用\{\}匹配模式结果出现的次数
使用*匹配所有匹配结果任意次,但如果只要指定次数,就应使用\{\},此模式有三种形式,
pattern\{n\} 匹配模式出现n次
pattern\{n,\} 匹配模式出现最少n次
pattern\{n,m} 匹配模式出现n到m次之是,n,m为0-255中的任意整数

eg1: A\{2\}B 匹配字母A出现两次,并以B结尾
eg2: A\{4,\}B 匹配字母A至少出现4次,并以B结尾
 结果可为AAAAB或AAAAAAB,但不能为AAAB
eg3: A\{2,4\}B 匹配字母A至少出现2-4次

    经常使用的正则表达式
---------------------------------------------------------------
 ^USER$  只包含USER的行
 ^[^l]   排除关联目录的目录列表 $ ls -l | grep ^[^l]
 [.*0]   0之前或之后加任意字符
 [^$]   空行
 [^......$]  包括6个字符的行
 [^.*$]  匹配行中任意字符串
 [^0-9\$]  非数字或美元标识
 [^0-9a-zA-Z] 非数字或字母
 ^.$   以有一个字符的行
 ^\.[0-9][0-9] 以一个句点和两个数字开始的行
 [0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\} 日期格式dd-mm-yyyy
 [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} 匹配IP地址
 [^.*$]  匹配任意行
---------------------------------------------------------------

阅读(1167) | 评论(0) | 转发(0) |
0

上一篇:grep

下一篇:命令正确执行顺序

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