LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 757|回复: 4

>>>LPI 证书 101 考试准备,第 2 部分

[复制链接]
发表于 2004-11-11 16:52:16 | 显示全部楼层 |阅读模式
什么是正则表达式?          第 1 页(共11 页)


正则表达式(也称为“regex”或“regexp”)是一种用来描述文本模式的特殊语法。在 Linux 系统上,正则表达式通常被用来查找文本的模式,以及对文本流执行“搜索-替换”操作以及其它功能。

与 glob 的比较          第 2 页(共11 页)


当我们看到正则表达式时,您可能发现正则表达式的语法看起来与我们上一篇教程(请参阅本教程最后的“参考资料”一节中列出的“第 1 部分”)中研究的“文件名匹配替换”语法相类似。但是,不要让它欺骗您;它们的类似性只是表面的。虽然正则表达式和文件名匹配替换模式可能看上去相类似,但是它们是根本不同的两种类型。

简单子串  第 3 页(共11 页)


记住那个警告,让我们看一下最基本的正则表达式,简单子串。为了这样做,我们要使用 grep,它是一个扫描文件内容来查找适合特定正则表达式的命令。grep 打印与正则表达式匹配的每一行,并忽略与之不匹配的每一行:


$ grep bash /etc/passwd
operator:x:11:0: operator:/root:/bin/bash
root:x:0:0::/root:/bin/bash
ftp:x:40:1::/home/ftp:/bin/bash

在上面的命令中,grep 的第一个参数是一个正则表达式;第二个参数是一个文件名。grep 读取 /etc/passwd 中的每一行并对它应用简单子串正则表达式 bash 来查找匹配项。如果找到一个匹配项,那么 grep 打印出整行;否则,忽略该行。

       


理解简单子串第 4 页(共11 页)


一般来说,如果您正在搜索一个子串,那么您可以不提供任何“特殊”字符,而只是逐字地指定文本。只有在子串包含 +、.、*、、 或 \(在这样的情况下,这些字符需要用引号括起来并在它们的前面使用反斜杠)才需要做特殊的事情。下面是简单子串正则表达式几个其它示例:

    *
    * /tmp (扫描查找文字串 /tmp)
    * "\[box\]"(扫描查找文字串 [box])
    * "\*funny\*"(扫描查找文字串 *funny*)
      "ld\.so"(扫描查找文字串 ld.so)

元字符         第 5 页(共11 页)


使用正则表达式,可以利用元字符来执行比我们至今已研究过的示例复杂得多的搜索。这些元字符中的一个是 .(点),它与任何单个字符匹配:


$ grep dev.hda /etc/fstab
/dev/hda3       /               reiserfs        noatime,ro 1 1
/dev/hda1       /boot           reiserfs        noauto,noatime,notail 1 2
/dev/hda2       swap            swap            sw 0 0
#/dev/hda4      /mnt/extra      reiserfs        noatime,rw 1 1

在本示例中,文字文本 dev.hda 没有出现在 /etc/fstab 中的任何一行中。但是,grep 扫描这些行时没有查找文字 dev.hda 字符串,而是查找 dev.hda 模式。请记住 . 将与任何单个字符相匹配。正如您看到的,. 元字符在功能上等价于 glob 扩展中 ? 元字符的工作原理。
 楼主| 发表于 2004-11-14 07:18:51 | 显示全部楼层

自己定

自己顶
 楼主| 发表于 2004-11-14 07:19:34 | 显示全部楼层

自己顶

自己来
 楼主| 发表于 2004-11-14 07:20:28 | 显示全部楼层

请老大别删除

我会补这篇文章D
发表于 2004-11-14 07:29:24 | 显示全部楼层
这个是第二个?。。。第二个更容易了??!!。。

反正绝对不是第一个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表