收藏 分享(赏)

JAVA中正则表达式使用介绍.pdf

上传人:精品资料 文档编号:10284675 上传时间:2019-10-28 格式:PDF 页数:11 大小:98.40KB
下载 相关 举报
JAVA中正则表达式使用介绍.pdf_第1页
第1页 / 共11页
JAVA中正则表达式使用介绍.pdf_第2页
第2页 / 共11页
JAVA中正则表达式使用介绍.pdf_第3页
第3页 / 共11页
JAVA中正则表达式使用介绍.pdf_第4页
第4页 / 共11页
JAVA中正则表达式使用介绍.pdf_第5页
第5页 / 共11页
点击查看更多>>
资源描述

1、JAVA中 正 则 表 达 式 使 用 介 绍一 、 什 么 是 正 则 表 达 式正 则 表 达 式 是 一 种 可 以 用 于 模 式 匹 配 和 替 换 的 强 有 力 的 工 具 。 我 们 可 以在 几 乎 所 有 的 基 于 UNIX系 统 的 工 具 中 找 到 正 则 表 达 式 的 身 影 , 例 如 , vi编 辑 器 ,Perl或 PHP脚 本 语 言 , 以 及 awk或 sed shell程 序 等 。 此 外 , 象 JavaScript这种 客 户 端 的 脚 本 语 言 也 提 供 了 对 正 则 表 达 式 的 支 持 。正 则 表 达 式 可 以 让 用 户

2、 通 过 使 用 一 系 列 的 特 殊 字 符 构 建 匹 配 模 式 , 进 行 信 息 的 验证 。此 外 , 它 还 能 够 高 效 地 创 建 、 比 较 和 修 改 字 符 串 , 以 及 迅 速 地 分 析 大 量 文 本 和 数据 以 搜 索 、 移 除 和 替 换 文 本 。例 如 :二 、 基 础 知 识1.1 开 始 、 结 束 符 号 ( 它 们 同 时 也 属 于 定 位 符 )我 们 先 从 简 单 的 开 始 。 假 设 你 要 写 一 个 正 则 表 达 式 规 则 , 你 会 用 到 和 $ 符 号 ,他 们 分 别 是 行 首 符 、 行 尾 符 。例 如

3、: /d+0-9?d+$/1.2 句 点 符 号假 设 你 在 玩 英 文 拼 字 游 戏 , 想 要 找 出 三 个 字 母 的 单 词 , 而 且 这 些 单 词 必 须 以 “ t”字 母 开 头 , 以 “ n” 字 母 结 束 。 另 外 , 假 设 有 一 本 英 文 字 典 , 你 可 以 用 正 则 表 达式 搜 索 它 的 全 部 内 容 。 要 构 造 出 这 个 正 则 表 达 式 , 你 可 以 使 用 一 个 通 配 符 句点 符 号 “ .” 。 这 样 , 完 整 的 表 达 式 就 是 “ t.n” , 它 匹 配 “ tan” 、 “ ten” 、“ tin”

4、 和 “ ton” , 还 匹 配 “ t#n” 、 “ tpn” 甚 至 “ t n” , 还 有 其 他 许 多 无 意义 的 组 合 。 这 是 因 为 句 点 符 号 匹 配 所 有 字 符 , 包 括 空 格 、 Tab字 符 甚 至 换 行 符 :1.3 方 括 号 符 号为 了 解 决 句 点 符 号 匹 配 范 围 过 于 广 泛 这 一 问 题 , 你 可 以 在 方 括 号 ( “ ” ) 里 面指 定 看 来 有 意 义 的 字 符 。 此 时 , 只 有 方 括 号 里 面 指 定 的 字 符 才 参 与 匹 配 。 也 就 是说 , 正 则 表 达 式 “ taeio

5、n” 只 匹 配 “ tan” 、 “ Ten” 、 “ tin” 和 “ ton” 。 但“ Toon” 不 匹 配 , 因 为 在 方 括 号 之 内 你 只 能 匹 配 单 个 字 符 :1.4 “ 或 ” 符 号如 果 除 了 上 面 匹 配 的 所 有 单 词 之 外 , 你 还 想 要 匹 配 “ toon” , 那 么 , 你 可 以 使 用“ |” 操 作 符 。 “ |” 操 作 符 的 基 本 意 义 就 是 “ 或 ” 运 算 。 要 匹 配 “ toon” , 使 用“ t(a|e|i|o|oo)n” 正 则 表 达 式 。 这 里 不 能 使 用 方 扩 号 , 因

6、为 方 括 号 只 允 许 匹 配单 个 字 符 ; 这 里 必 须 使 用 圆 括 号 “ ()” 。1.5 表 示 匹 配 次 数 的 符 号表 一 : 显 示 了 表 示 匹 配 次 数 的 符 号 , 这 些 符 号 用 来 确 定 紧 靠 该 符 号 左 边 的 符 号 出现 的 次 数 :代 码 /语 法 说 明* 重 复 零 次 或 更 多 次+ 重 复 一 次 或 更 多 次? 重 复 零 次 或 一 次n 重 复 n次n, 重 复 n次 或 更 多 次n,m 重 复 n到 m次表 二 : 常 用 符 号代 码 /语 法 相 当 于w 0-9A-Za-z_W 0-9A-Za-z

7、_s tnrfS tnrfd 0-9D 0-9表 二 中 的 符 号 意 义 : w包 括 下 划 线 的 字 母 和 数 字 。 等 同 于 0-9A-Za-z_。若 为 匹 配 多 字 节 字 符 的 正 则 表 达 式 时 , 则 也 会 匹 配 日 语 的 全 角 字 符 。 W非 字 母 和 数 字 。 w以 外 的 单 个 字 符 。 s空 字 符 。 相 当 于 tnrf S非 空 字 符 。 tnrf 以 外 的 单 个 字 符 。 d数 字 。 即 0-9 D非 数 字 。 d以 外 的 单 个 字 符1.6 定 位 符 介 绍 ( 用 于 规 定 匹 配 模 式 在 目 标

8、 对 象 中 的 出 现 位 置 )较 为 常 用 的 定 位 符 包 括 : “ ” , “ $” , “ b” 以 及 “ B” 。 其 中 , “ ” 定位 符 规 定 匹 配 模 式 必 须 出 现 在 目 标 字 符 串 的 开 头 , “ $” 定 位 符 规 定 匹 配 模 式 必须 出 现 在 目 标 对 象 的 结 尾 , b定 位 符 规 定 匹 配 模 式 必 须 出 现 在 目 标 字 符 串 的 开头 或 结 尾 的 两 个 边 界 之 一 , 而 “ B” 定 位 符 则 规 定 匹 配 对 象 必 须 位 于 目 标 字 符 串的 开 头 和 结 尾 两 个 边

9、界 之 内 , 即 匹 配 对 象 既 不 能 作 为 目 标 字 符 串 的 开 头 , 也 不 能作 为 目 标 字 符 串 的 结 尾 。 同 样 , 我 们 也 可 以 把 “ ” 和 “ $” 以 及 “ b” 和 “ B”看 作 是 互 为 逆 运 算 的 两 组 定 位 符 。 举 例 来 说 :/hell/因 为 上 述 正 则 表 达 式 中 包 含 “ ” 定 位 符 , 所 以 可 以 与 目 标 对 象 中 以“ hell” , “ hello” 或 “ hellhound” 开 头 的 字 符 串 相 匹 配 。/ar$/因 为 上 述 正 则 表 达 式 中 包 含

10、 “ $” 定 位 符 , 所 以 可 以 与 目 标 对 象 中 以“ car” , “ bar” 或 “ ar” 结 尾 的 字 符 串 相 匹 配 。/bbom/因 为 上 述 正 则 表 达 式 模 式 以 “ b” 定 位 符 开 头 , 所 以 可 以 与 目 标 对 象 中 以“ bomb” , 或 “ bom” 开 头 的 字 符 串 相 匹 配 。/manb/因 为 上 述 正 则 表 达 式 模 式 以 “ b” 定 位 符 结 尾 , 所 以 可 以 与 目 标 对 象 中 以“ human” , “ woman” 或 “ man” 结 尾 的 字 符 串 相 匹 配 。

11、为 了 能 够 方 便 用 户 更 加 灵 活 的 设 定 匹 配 模 式 , 正 则 表 达 式 允 许 使 用 者 在 匹 配模 式 中 指 定 某 一 个 范 围 而 不 局 限 于 具 体 的 字 符 。 例 如 :/A-Z/上 述 正 则 表 达 式 将 会 与 从 A到 Z范 围 内 任 何 一 个 大 写 字 母 相 匹 配 。/a-z/上 述 正 则 表 达 式 将 会 与 从 a到 z范 围 内 任 何 一 个 小 写 字 母 相 匹 配 。/0-9/上 述 正 则 表 达 式 将 会 与 从 0到 9范 围 内 任 何 一 个 数 字 相 匹 配 。/(a-zA-Z0-9)

12、+/上 述 正 则 表 达 式 将 会 与 任 何 由 字 母 和 数 字 组 成 的 字 符 串 , 如 “ aB0” 等 相匹 配 。 这 里 需 要 提 醒 用 户 注 意 的 一 点 就 是 可 以 在 正 则 表 达 式 中 使 用 “ ()” 把 字符 串 组 合 在 一 起 。 “ ()” 符 号 包 含 的 内 容 必 须 同 时 出 现 在 目 标 对 象 中 。 因 此 , 上述 正 则 表 达 式 将 无 法 与 诸 如 “ abc” 等 的 字 符 串 匹 配 , 因 为 “ abc” 中 的 最 后 一个 字 符 为 字 母 而 非 数 字 。如 果 我 们 希 望

13、在 正 则 表 达 式 中 实 现 类 似 编 程 逻 辑 中 的 “ 或 ” 运 算 , 在 多 个 不同 的 模 式 中 任 选 一 个 进 行 匹 配 的 话 , 可 以 使 用 管 道 符 “ |” 。 例 如 :/to|too|2/上 述 正 则 表 达 式 将 会 与 目 标 对 象 中 的 “ to” , “ too” , 或 “ 2” 相 匹配 。 正 则 表 达 式 中 还 有 一 个 较 为 常 用 的 运 算 符 , 即 否 定 符 “ ” 。 与 我 们 前 文所 介 绍 的 定 位 符 “ ” 不 同 , 否 定 符 “ ” 规 定 目 标 对 象 中 不 能 存 在

14、 模 式 中所 规 定 的 字 符 串 。 例 如 :/A-C/上 述 字 符 串 将 会 与 目 标 对 象 中 除 A, B, 和 C之 外 的 任 何 字 符 相 匹 配 。 一 般来 说 , 当 “ ” 出 现 在 “ ” 内 时 就 被 视 做 否 定 运 算 符 ; 而 当 “ ” 位 于 “ ”之 外 , 或 没 有 “ ” 时 , 则 应 当 被 视 做 定 位 符 。最 后 , 当 用 户 需 要 在 正 则 表 达 式 的 模 式 中 加 入 元 字 符 , 并 查 找 其 匹 配 对 象 时 ,可 以 使 用 转 义 符 “ ” 。 例 如 :/Th*/上 述 正 则 表

15、 达 式 将 会 与 目 标 对 象 中 的 “ Th*” 而 非 “ The” 等 相 匹 配 。三 、 正 则 表 达 式 规 则 的 例 子/(d3-|d4-)?(d8|d7)?$/ /国 内 电 话/1-9*1-90-9*$/ /腾 讯 QQ/w-+(.w-+)*w-+(.w-+)+$/ /email地 址/a-zA-Z+:/(w+(-w+)*)(.(w+(-w+)*)*(?s*)?$/ /url/d+$/ /非 负 整 数/0-9*1-90-9*$/ /正 整 数/(-d+)|(0+)$/ /非 正 整 数/-0-9*1-90-9*$/ /负 整 数/-?d+$/ /整 数/d+(.

16、d+)?$/ /非 负 浮 点 数/(0-9+.0-9*1-90-9*)|(0-9*1-90-9*.0-9+)|(0-9*1-90-9*)$/ /正 浮 点 数/(-d+(.d+)?)|(0+(.0+)?)$/ /非 正 浮 点 数/(-(0-9+.0-9*1-90-9*)|(0-9*1-90-9*.0-9+)|(0-9*1-90-9*)$/ /负 浮 点 数/(-?d+)(.d+)?$/ /浮 点 数/a-zA-Z+$/ /由 26个 英 文 字 母 组 成 的 字 符 串/a-z+$/ /由 26个 英 文 字 母 的 大 写 组 成 的 字 符 串/a-z+$/ /由 26个 英 文 字

17、 母 的 小 写 组 成 的 字 符 串/a-za-z0-9+$/ /由 数 字 和 26个 英 文 字 母 组 成 的 字 符 串/w+$/ /由 数 字 、 26个 英 文 字 母 或 者 下 划 线 组 成 的 字 符 串/d+.?d+$/ /可 以 有 小 数 点 的 任 意 多 数 字 ( 全 部 为 数 字 )/(?=0-9a-zA-Z4,20$)w*a-zA-Z+w*/ /同 时 满 足 下 面 三 个 条 件( 1) 数 字 和 字 母 ( 2) 4-20位 ( 3) 不 能 全 部 是 数 字四 、 应 用1 应 用 于 JavaScript ( 用 来 验 证 )funct

18、ion doCheck()var patrn = /d+.?d+$/;var vf1 = document.queryForm.f2Text.value; /文 本 框var vf2 = document.queryForm.f4Text.value;var vf3 = document.queryForm.f6Text.value;var va1 = document.queryForm.a2.checked; /单 选 按 钮var va2 = document.queryForm.a4.checked;var va3 = document.queryForm.a6.checked;if(

19、va1)if(!patrn.exec(vf1)alert(“请 您 输 入 数 字 , 如 : 30 、 5.8“);return;if(va2)if(!patrn.exec(vf2)alert(“请 您 输 入 数 字 , 如 : 30 、 5.8“);return;。 。 。 。 。 。2 在 Java中 的 应 用Java包 java.util.regex提 供 对 正 则 表 达 式 的 支 持 。 而 且 Java.lang.String类中 的 replaceAll和 split函 数 也 是 调 用 的 正 则 表 达 式 来 实 现 的 。正 则 表 达 式 对 字 符 串 的

20、 操 作 主 要 包 括 : 字 符 串 匹 配 , 指 定 字 符 串 替 换 , 指 定字 符 串 查 找 和 字 符 串 分 割 。 下 面 就 用 一 个 例 子 来 说 明 这 些 操 作 是 如 何 实 现 的 :;“);/字 符 串 匹 配 , 这 是 符 合 的p = Ppile(“a*b“);m = p.matcher(“aaaaab“);b = m.matches();out.println(b+“;“);/字 符 串 替 换p = Ppile(“ab“);m = p.matcher(“aaaaab“);s = m.replaceAll(“d“);out.println(s

21、+“;“);p = Ppile(“a*b“);m = p.matcher(“aaaaab“);s = m.replaceAll(“d“);out.println(s+“;“);p = Ppile(“a*b“);m = p.matcher(“caaaaab“);s = m.replaceAll(“d“);out.println(s+“;“);/字 符 串 查 找p = Ppile(“cat“);m = p.matcher(“one cat two cats in the yard“);sb = new StringBuffer();while (m.find() m.appendReplacem

22、ent(sb, “dog“);i+;m.appendTail(sb);out.println(sb.toString()+“;“);out.println(i+“;“);i=0;p = Ppile(“cat“);m = p.matcher(“one cat two ca tsi nthe yard“);sb = new StringBuffer();while (m.find() m.appendReplacement(sb, “dog“);i+;m.appendTail(sb);out.println(sb.toString()+“;“);out.println(i+“;“);p = Ppi

23、le(“cat“);m = p.matcher(“one cat two cats in the yard“);p=m.pattern();m = p.matcher(“bacatab“);b = m.matches();out.println(b+“;“);s = m.replaceAll(“dog“);out.println(s+“;“);i=0;p = Ppile(“(fds)2,“);m = p.matcher(“dsa da fdsfds aaafdsafds aaf“);sb = new StringBuffer();while (m.find() m.appendReplacem

24、ent(sb, “dog“);i+;m.appendTail(sb);out.println(sb.toString()+“;“);out.println(i+“;“);p = Ppile(“cat“);m = p.matcher(“one cat two cats in the yard“);sb = new StringBuffer();while (m.find() m.appendReplacement(sb, “;cat;“);m.appendTail(sb);out.println(sb.toString()+“;“);String aa=sb.toString();out.println(aa+“;“);/字 符 串 分 割p = Ppile(“a+“);String a=p.split(“caaaaaat“);for(i=0;i;“);p = Ppile(“a+“);a=p.split(“c aa aaaa t“,0);for(i=0;i;“);p = Ppile(“ +“);a=p.split(“c aa aaaa t“,0);for(i=0;i;“);p = Ppile(“+“);a=p.split(“dsafasdfdsafsda+dsagfasdfa+sdafds“);out.println(a.length+“;“);for(i=0;i;“);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报