13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

上 边 的 例 子 十 分 简 洁 , 但 是 如 果 我 们 想 找 出 所 有 连 接 类 型 而 不 是 只 是 http 连 接 时 怎 么 办 ?我 们 可 以 给 出 很 多 连 接 类 型 : 象 “http:”,“ftp:”,“mailto:” 等 等 。 我 们 可 以 使 用 下 面 的 代码 来 完 成 , 但 是 当 我 们 需 要 加 进 一 种 新 的 连 接 类 型 时 怎 么 办 ?while () {print if /http:/;print if /ftp:/;print if /mailto:/;# 下 一 个 是 什 么 ?}因 为 正 则 表 达 式 是 一 组 字 符 串 的 抽 象 , 我 们 可 以 只 描 述 我 们 要 找 的 东 西 : 后 面 跟 着 一 个 冒 号的 一 些 字 符 。 用 正 则 表 达 式 表 示 为 /[a-zA-Z]+:/, 这 里 方 括 弧 定 义 了 一 个 字 符 表 ,a-z 和A-Z 代 表 所 有 的 字 母 字 符 ( 划 线 表 示 从 开 头 的 字 符 到 结 尾 字 符 中 间 的 所 有 字 母 字 符 )。+ 是一 个 特 殊 字 符 , 表 示 匹 配 “+ 前 边 内 容 一 次 或 多 次 ”。 我 们 称 之 为 量 词 , 这 是 表 示 允 许 重 复多 少 次 的 符 号 。( 这 里 反 斜 杠 不 是 正 则 表 达 式 的 一 部 分 , 但 是 它 是 模 式 匹 配 操 作 符 的 一 部 分 。在 这 里 , 反 斜 杠 与 包 含 正 则 表 达 式 的 双 引 号 起 同 样 的 作 用 )。因 为 字 母 字 符 这 种 类 型 经 常 要 用 到 , 因 此 <strong>Perl</strong> 定 义 了 下 面 一 些 简 写 的 方 式 :名 字 ASCII 定 义代 码空 白 [\t\n\r\f] \s词 [a-zA-Z_0-9] \w数 字 [0-9] \d注 意 这 些 简 写 都 只 匹 配 单 个 字 符 , 比 如 一 个 \w 匹 配 任 何 单 个 字 符 , 而 不 是 整 个 词 。( 还记 得 量 词 + 吗 ? 你 可 以 使 用 \w+ 来 匹 配 一 个 词 )。 在 <strong>Perl</strong> 中 , 这 些 通 配 符 的 大 写 方 式代 表 的 意 思 和 小 写 方 式 刚 好 相 反 。 例 如 你 可 以 使 用 \D 表 示 左 右 非 数 字 字 符 。我 们 需 要 额 外 注 意 的 是 ,\w 并 不 是 总 等 于 [a-zA-Z0-9] ( 而 且 \d 也 不 总 等 于 [0-9]),这 是 因 为 有 些 系 统 自 定 义 了 一 些 ASCII 外 的 额 外 的 字 符 ,\w 就 代 表 所 有 的 这 些 字 符 。 较新 版 本 的 <strong>Perl</strong> 也 支 持 Unicode 字 符 和 数 字 特 性 , 并 且 根 据 这 些 特 性 来 处 理 Unicode 字符 。(<strong>Perl</strong> 认 为 \w 代 表 表 意 文 字 )。还 有 一 种 非 常 特 别 的 字 符 类 型 , 用 “.” 来 表 示 , 这 将 匹 配 所 有 的 字 符 。( 注 : 除 了 通 常 它 不会 匹 配 一 个 新 行 之 外 。 如 果 你 有 怀 疑 , 点 “.” 在 grep (1) 里 通 常 也 不 匹 配 新 行 。) 例 如 ,/a./将 会 匹 配 所 有 含 有 一 个 “a” 并 且 “a” 不 是 最 后 一 个 字 符 的 字 符 串 。 因 而 它 将 匹 配 “at” 或 “am”42

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!