繁体   English   中英

Oracle - PCRE 到 Oracle 正则表达式

[英]Oracle - PCRE to Oracle REGEX

我想在第一次出现和第二次出现“@”之后提取所有内容:

1331@我要这个@ 3ad44 @2

在 PCRE 中,我会这样做(至少对于给定的示例):

(?<=\d{4}\@).\w+ 

由于 Oracle DBMS 不支持 PCRE,如何提取所需的 substring?

在 Oracle 中,您可以使用

SELECT REGEXP_SUBSTR('1331@iwantthis@3ad44@2', '[^@]+', 1, 2)

请参阅在线演示

这将从字符串中的第一个符号(因为position参数设置为1 )开始提取与一个或多个字符匹配的[^@]+模式的第二次出现(因为出现参数设置为2@尽可能多。

REGEXP_SUBSTR参考页上查看更多详细信息。

将要匹配的表达式包装在捕获组中,然后展开后视,然后使用REGEXP_SUBSTR的第 6 个参数提取捕获组的值:

SELECT REGEXP_SUBSTR('1331@iwantthis@3ad44@2', '\d{4}\@(.\w+)', 1, 1, NULL, 1 )
FROM   DUAL;

哪个输出:

  |  REGEXP_SUBSTR('1331@IWANTTHIS@3AD44@2','\D{4}\@(.\W+)',1,1,NULL,1) |  |:------------------------------------------------ ------------------ |  | 我想要这个 |

db<> 在这里摆弄

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM