![](/img/trans.png)
[英]How do I convert this pcre regex to be used with Oracle's REGEXP_SUBSTR?
[英]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.