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.

反 字 符 表 的 习 惯 方 式 。) 另 外 需 要 仔 细 观 察 的 就 是 , 正 则 表 达 式 将 尽 早 进 行 匹 配 。 甚 至 在 它变 得 贪 婪 以 前 。 因 为 字 符 串 扫 描 是 从 左 向 右 的 , 这 就 意 味 着 , 模 式 将 尽 可 能 在 左 边 得 到 匹 配 。尽 管 也 许 在 后 边 也 能 得 到 匹 配 。( 正 则 表 达 式 也 许 贪 婪 , 但 不 会 错 过 满 足 条 件 的 机 会 )。 例如 , 假 设 你 在 使 用 替 换 命 令 (s///) 处 理 缺 省 字 符 串 ( 变 量 $_), 并 且 你 希 望 删 除 中 间 的所 有 的 x。 如 果 你 说 :$_ = "fred xxxxxxx barney";s/x*//;但 是 上 面 的 代 码 并 没 有 达 到 预 想 的 目 的 , 这 是 因 为 x*( 表 示 零 次 或 多 次 “x”) 在 字 符 串 的开 始 匹 配 了 空 字 符 串 , 因 为 空 字 符 串 具 有 零 字 符 宽 度 , 并 且 在 fred 的 f 字 符 前 正 好 有 一个 空 字 串 。( 注 : 千 万 不 要 感 觉 不 爽 , 即 使 是 作 者 也 经 常 惨 遭 毒 手 。)还 有 一 件 你 必 须 知 道 的 事 情 , 缺 省 时 量 词 作 用 在 它 前 面 的 单 个 字 符 上 , 因 此 /bam{2}/ 将匹 配 “bamm” 而 不 是 “bambam”。 如 果 你 要 对 多 于 一 个 字 符 使 用 量 词 , 你 需 要 使 用 圆 括 弧 ,因 此 为 了 匹 配 “bambam” 需 要 使 用 /(bam){2}/。1.7.2 最 小 匹 配如 果 你 在 使 用 老 版 本 的 <strong>Perl</strong> 并 且 你 不 想 使 用 贪 婪 匹 配 , 你 必 须 使 用 相 反 的 字 符 表 ( 实 际 上 ,你 还 是 在 使 用 不 同 形 式 的 贪 婪 匹 配 )。在 新 版 本 <strong>Perl</strong> 中 , 你 可 以 强 制 进 行 非 贪 婪 匹 配 。 在 量 词 后 面 加 上 一 个 问 号 来 表 示 最 小 匹 配 。我 们 同 样 的 用 户 名 匹 配 就 可 以 写 成 /.*?:/。 这 里 的 .*? 现 在 尽 可 能 少 地 匹 配 字 符 , 而 不 是尽 可 能 多 的 匹 配 字 符 。 所 以 它 将 停 止 在 第 一 个 冒 号 而 不 是 最 后 一 个 。1.7.3 把 钉 子 敲 牢你 无 论 什 么 时 候 匹 配 一 个 模 式 , 正 则 表 达 式 都 尝 试 在 每 个 地 方 进 行 匹 配 直 到 找 到 一 个 匹 配 为止 。 一 个 锚 点 允 许 你 限 制 模 式 能 在 什 么 地 方 匹 配 。 基 本 来 说 , 锚 点 匹 配 一 些 “ 无 形 ” 的 东 西 ,这 些 东 西 依 赖 于 周 边 的 特 殊 环 境 。 你 可 以 称 他 们 为 规 则 , 约 束 或 断 言 。 不 管 你 怎 么 称 呼 它 ,它 都 试 图 匹 配 一 些 零 宽 度 的 东 西 , 或 成 功 或 失 败 ( 失 败 仅 仅 意 味 着 这 个 模 式 用 这 种 特 殊 的 方法 不 能 匹 配 。 如 果 还 有 其 它 方 法 可 以 试 的 话 , 该 模 式 会 继 续 用 其 它 方 法 进 行 匹 配 。)特 殊 符 号 \b 匹 配 单 词 边 界 , 就 是 位 于 单 词 字 符 (\w) 和 非 单 词 字 符 (\W) 之 间 的 零 宽度 的 地 方 。( 字 符 串 的 开 始 和 结 尾 也 被 认 为 是 非 单 词 字 符 )。 例 如 : /\bFred\b/ 将 会 匹 配“The Great Fred” 和 “Fred the Great” 中 的 Fred, 但 不 能 匹 配 “Frederick the Great” ,因 为 在 “Frederick” 中 的 “d” 后 面 没 有 跟 着 非 单 词 字 符 。44

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

Saved successfully!

Ooh no, something went wrong!