0

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

4

2 回答 2

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

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

于 2013-11-20T08:05:25.127 回答
0

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

你也可以看看这个答案

于 2013-10-23T09:30:43.507 回答