![](/img/trans.png)
[英]How to apply `REGEXP_SUBSTR` to extract specific substring from string?
[英]REGEXP_SUBSTR to extract a substring from Vertical SQL
我正在尝试运行以下查询以从字符串中获取 substring 但它给出了错误的结果。 我不确定如何使用正则表达式,因为我使用的正则表达式与 PCRE 配合得很好。
SELECT REGEXP_SUBSTR(
'Wireless-Interface-APName-ndehqb-a3g4-a10-slotId-1'
, '.*\-APName\-(.*)\-slotId.*'
)
在这种情况下,我期望得到ndehqb-a3g4-a10
,但它会打印原始字符串本身。 要求是获得与-APName-
和 -slotId- 之间的任何内容匹配的-slotId-
由于 Vertica 的正则表达式函数使用 PCRE,因此使用其他相关标记对其进行标记。
您不是在尝试获取整个模式(即整个输入字符串),而是在圆括号中捕获的第一个子表达式。
这使得调用有点复杂——我总是必须在文档中查找它,因为我似乎永远无法记住所有可能的参数及其顺序。
这是我如何称呼它,带有注释参数:
SELECT
REGEXP_SUBSTR(
'Wireless-Interface-APName-ndehqb-a3g4-a10-slotId-1' -- in string
, '.*\-APName\-(.*)\-slotId.*' -- pattern
, 1 -- search start position
, 1 -- occurrence
, '' -- modifier
, 1 -- captured subexp number
) AS captured_subexp
;
-- out captured_subexp
-- out -----------------
-- out ndehqb-a3g4-a10
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.