【问题标题】:Oracle Scripts parsing using regex使用正则表达式解析 Oracle 脚本
【发布时间】:2013-10-23 09:12:35
【问题描述】:

我正在尝试解析 oracle 脚本。目的是提取函数、过程、循环、异常等的数量。完成此任务的最合适方法是什么?我目前正在使用正则表达式执行此操作。但它似乎并没有涵盖所有场景。我需要一些替代方案。

【问题讨论】:

    标签: java regex oracle plsql


    【解决方案1】:

    我创建了以下正则表达式来找出包、函数、过程、循环、异常、元数据定义和匿名块。

    "create\\s+(or\\s+replace\\s+)?(package)\\s+(body\\s+)?([\\w\\.]+)" +//1-4
            "|(\\bcreate\\s+)?(\\bor\\s+)?(\\breplace\\s+)?(\\bfunction|\\bprocedure)\\s+(\\w+)" +//5-9
            "|(\\bexception)\\s" +//10
            "|(\\bcursor)\\s*(\\w+)"+//11-12
            "|(\\bloop)\\s"+//13
            "|(\\w+)\\s*([\\w\\.]+)\\s*%(ROW)?(TYPE);"+//14-17
            "|(\\bdeclare)\\s"//18
    

    该技术是消除 cmets 和字符串文字,然后应用正则表达式。它对我来说很好用。

    【讨论】:

      【解决方案2】:

      这是一个有趣的话题,你可以使用不同的事务长。一种流行的方法是ANTLR.Grammar,因为那里定义了 pl/sql。

      你也可以看看This Answer

      【讨论】:

      • 这是一个不错的建议,但我们已经在使用 ANTLR 进行 SQL 转换。这只是为了分析目的,我们只需要计算函数、过程、循环、异常等。
      • ic,那么如果你们还有其他好的选择,请分享,我正在一个有很多 pl/sql 脚本的项目中工作,如果可以的话,有些脚本超过 7000 行所以..那么记录代码会很有帮助
      猜你喜欢
      • 2016-04-27
      • 2015-01-09
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多