13.07.2015 Views

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

Perl 语言编程 - Linux教程

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

你 可 以 确 信 除 非 该 字 串 在 什 么 地 方 包 含 子 字 串 “Frodo”, 否 则 该 模 式 不 会 匹 配 上 。( 一 个 子字 串 只 是 字 串 的 一 部 分 。) 这 样 的 匹 配 可 以 发 生 在 字 串 里 的 任 何 位 置 , 只 要 这 五 个 字 符 以 上面 的 顺 序 在 什 么 地 方 出 现 就 行 。其 他 字 符 并 不 匹 配 自 身 , 而 是 从 某 种 角 度 来 说 表 现 得 有 些 “ 怪 异 ”。 我 们 把 这 些 字 符 称 做 元 字符 。( 大 多 数 元 字 符 都 是 自 己 淘 气 , 但 是 有 一 些 坏 得 把 旁 边 的 字 符 也 带 “ 坏 ” 了 。)下 面 的 就 是 这 些 字 符 :\ | ( ) [ { ^ $ * + ? .实 际 上 元 字 符 非 常 有 用 , 而 且 在 模 式 里 有 特 殊 的 含 义 ; 我 们 会 一 边 讲 述 , 一 边 告 诉 你 所 有 的那 些 含 义 。 不 过 我 们 还 是 要 告 诉 你 , 你 仍 然 可 以 在 任 意 时 刻 使 用 前 置 反 斜 杠 的 方 法 来 匹 配 这十 二 个 字 符 本 身 。 比 如 , 反 斜 杠 本 身 是 一 个 元 字 符 , 因 此 如 果 你 要 匹 配 一 个 文 本 的 反 斜 杠 ,你 要 在 反 斜 杠 前 面 放 一 个 反 斜 杠 :\\。要 知 道 , 反 斜 杠 就 是 那 种 让 其 他 字 符 “ 怪 异 ” 的 字 符 。 事 实 是 如 果 你 让 一 个 怪 异 元 字 符 再 次 怪异 , 它 就 会 正 常 —— 双 重 否 定 等 于 肯 定 。 因 此 反 斜 杠 一 个 字 符 能 够 让 它 正 确 反 映 文 本 值 , 但是 这 条 只 对 标 点 符 号 字 符 有 用 ; 反 斜 杠 ( 平 时 正 常 ) 的 字 母 数 字 字 符 作 用 相 反 : 它 把 该 文 本字 符 变 成 某 些 特 殊 的 东 西 。 不 论 什 么 时 候 你 看 到 下 面 的 双 字 符 序 列 :\b \D \t \3 \s你 就 应 该 知 道 这 些 序 列 是 一 个 元 符 号 , 它 们 匹 配 某 些 特 殊 的 东 西 。 比 如 ,\b 匹 配 一 个 字 边界 , 而 \t 匹 配 一 个 普 通 水 平 制 表 字 符 。 请 注 意 一 个 水 平 制 表 符 是 一 个 字 符 宽 , 而 一 个 字 边界 是 零 字 符 宽 , 因 为 它 是 两 个 字 符 之 间 的 位 置 。 所 以 我 们 管 \b 叫 一 个 零 宽 度 断 言 。 当 然 ,\t 和 \b 还 是 相 似 的 , 因 为 他 们 都 断 言 某 些 和 字 串 里 的 某 个 特 殊 位 置 相 关 的 东 西 。 当 你 在正 则 表 达 式 里 断 言 某 些 东 西 的 时 候 , 你 的 意 思 只 是 说 , 如 果 要 匹 配 模 式 , 那 些 东 西 必 须 是 真的 。一 个 正 则 表 达 式 里 的 大 多 数 部 分 都 是 某 种 断 言 , 包 括 那 些 普 通 字 符 , 只 不 过 它 们 是 断 言 它 们必 须 匹 配 自 身 。 准 确 来 说 , 它 们 还 断 言 下 一 个 东 西 将 匹 配 字 串 里 下 一 个 字 符 , 这 也 是 为 什 么我 们 说 水 平 制 表 符 是 “ 单 字 符 宽 ”。 有 些 断 言 ( 比 如 \t) 当 匹 配 的 时 候 就 吞 掉 字 串 的 一 部 分 ,而 其 他 的 ( 比 如 \b) 不 会 这 样 。 但 是 通 常 我 们 把 “ 断 言 ” 这 个 词 保 留 给 零 宽 度 断 言 用 。 为 避免 混 淆 , 我 们 把 这 些 东 西 称 做 宽 度 为 一 个 原 子 的 东 西 。( 如 果 你 是 一 个 物 理 学 家 , 你 可 以 把非 零 宽 的 原 子 当 作 物 质 , 相 比 之 下 零 宽 断 言 类 似 无 质 量 的 光 子 。)你 还 会 看 到 有 些 元 字 符 不 是 断 言 ; 而 是 结 构 元 素 ( 就 好 象 花 括 弧 和 分 号 定 义 普 通 <strong>Perl</strong> 代 码的 结 构 , 但 是 实 际 上 什 么 也 不 干 )。 这 些 结 构 元 字 符 在 某 种 程 度 上 来 说 是 最 重 要 的 元 字 符 ,因 为 学 习 阅 读 正 则 表 达 式 关 键 的 第 一 步 就 是 让 你 的 眼 睛 学 会 挑 出 结 构 元 字 符 。 一 旦 你 学 会 了146

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

Saved successfully!

Ooh no, something went wrong!