使用正则表达式解析 Oracle 脚本
Posted
技术标签:
【中文标题】使用正则表达式解析 Oracle 脚本【英文标题】:Oracle Scripts parsing using regex 【发布时间】:2013-10-23 09:12:35 【问题描述】:我正在尝试解析 oracle 脚本。目的是提取函数、过程、循环、异常等的数量。完成此任务的最合适方法是什么?我目前正在使用正则表达式执行此操作。但它似乎并没有涵盖所有场景。我需要一些替代方案。
【问题讨论】:
【参考方案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 行所以..那么记录代码会很有帮助以上是关于使用正则表达式解析 Oracle 脚本的主要内容,如果未能解决你的问题,请参考以下文章