构建用于正则表达式的抽象Java API - 编程入门网
ler =
org.acmsl.regexpplugin.RegexpManager.createCompiler();
但存在差异。正如前面提到的,该 API 对实际使用哪个具体实现加以隐藏。 您可以选择一个具体实现或保留缺省的 Jakarta Oro。如果所选的库在运行时不 可用,则 RegexpPlugin API 会尝试用它的类名创建一个编译器。如果该操作失 败,它会将异常发回 API 的客户机。 假定您一直在使用 JDK 1.4 的内置 regexp 类。那样的话,包含始终不会使 用的额外 jar 文件毫无意义。那就是为什么仅仅调用 createCompiler() 方法 还不够的原因。您需要管理这样的异常:每当所选的库不存在时就会抛出该异常 。因而必须更新示例:
第 2 步:编译 regexp 模式。将正则表达式本身编译到 Pattern 对象中。
注:您必须转义反斜杠(\)字符。 该模式对象代表以文本格式定义的正则表达式。请尽可能多地重用模式实例 。然后,如果 regexp 是固定的(缺少任何可变部分,如 “(.*?) Tom.*”),则模式应是类中的静态成员。 compile 方法适合用标志(如 EXTENDED_MASK )来配置(请参阅 参考资料 以获得更详细的 regexp 教程)。但是,RegexpPlugin 并不允许随意的标志。 受支持的标志只有 case sensitivity 和 multiline ,因为所有受支持的库都 可以处理它们。 编译器实例有特定的特性来定义这些标志:
第 3 步:创建 Matcher 对象。在 Jakarta Oro中,这一步非常简单:
它之所以如此简单是因为它不需要构造任何信息。在后来的 regexp 中,它 将变得具体。基本上,RegexpPlugin 中的步骤差不多相似。您不必亲自创建 matcher ,而是可以将其代理给 RegexpManager 类:
区别和前面一样,您需要处理 RegexpEngineNotFoundException 。实际上, RegexpManager 需要为您所选的库或缺省库创建 matcher 适配器。如果这样的 类在运行时不可用,它会抛出该异常。 构建用于正则表达式的抽象Java API(4)时间:2010-12-24 Jose San Leandro Arm第 4 步:评估正则表达式。 matcher 对象需要解释正则表达式并抽取所需 的信息。这在一行代码中完成:
如果输入文本与正则表达式匹配,则该方法返回 true。隐含的副作用是,执 行该行代码之后, matcher 对象包含在输入文本中找到的第一个匹配项。接下 来的一步演示如何实际获取感兴趣的信息。 通过使用 RegexpPlugin API,在此时根本没有任何不同。 第 5 步:检索找到的第一个匹配项。 这一简单的步骤仅用一行完成: org.apache.oro.text.regex.MatchResult matchResult = matcher.getMatch(); 您可以声明一个局部变量来存储这样的对象,该对象含有与 regexp 匹配的 一段文本。在这两种情况下,该步骤是相同的,除了变量声明(因为一个是另一 个的适配器):
第 6 步:获取感兴趣的 gr |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |