gpt4 book ai didi

sql - 如何使用 regexp_substr 提取包名

转载 作者:行者123 更新时间:2023-12-04 23:54:43 26 4
gpt4 key购买 nike

我想使用 regexp_substr 提取包名称。

例如:

create or replace package body something.pkg_test is



我要那个:

pkg_test



我试图使用lookbehind来忽略“创建或替换包体的东西。”:
select regexp_substr('create or replace package body something.pkg_test is','((?<!create\sor\sreplace\spackage\sbody\ssomething\.).)*$',1,1) from dual;

但它不起作用。所以我只需要在“创建或替换包体内容”和第一个空格或\n之间提取包名。

我需要它,因为在编译 .sql 文件并将其插入表中之前,我需要包名称。

最佳答案

我的猜测是,也许您正试图用积极的后视来编写一些表达式:

(?<=create\sor\sreplace\spackage\sbody\ssomething\.)\S*

或者,或者,我们会使用一些没有环顾的表达式,例如:
create\sor\sreplace\spackage\sbody\ssomething\.(\S*).*
带捕获组 1 ,我们的代码可能如下所示:
select regexp_replace('create or replace package body something.pkg_test is', 'create\sor\sreplace\spackage\sbody\ssomething\.(\S*).*', '\1') from dual;
虽然不确定。
Demo 2

演示
该表达式在 regex101.com 的右上角面板中进行了解释。 ,如果你想探索/简化/修改它,在 this link ,如果您愿意,您可以观看它如何与某些示例输入匹配。

引用
How to extract group from regular expression in Oracle?

关于sql - 如何使用 regexp_substr 提取包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57366048/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com