【发布时间】:2021-06-22 11:32:23
【问题描述】:
我正在使用 regexp_extract 从字符串中获取子字符串
我的字符串是“:abd: 576892034 :erg: 94856023MXCI :oute: A RF WERS YUT :oowpo: 649217349GBT GB”
如何使用 regexp_extract 函数得到这个。
如果我将密钥传递为 abd,我需要值为 576892034 任何其他功能也可以。
【问题讨论】:
我正在使用 regexp_extract 从字符串中获取子字符串
我的字符串是“:abd: 576892034 :erg: 94856023MXCI :oute: A RF WERS YUT :oowpo: 649217349GBT GB”
如何使用 regexp_extract 函数得到这个。
如果我将密钥传递为 abd,我需要值为 576892034 任何其他功能也可以。
【问题讨论】:
select
regexp_extract(
':adb: 576892034 :erg: 94856023MXCI :oute: A RF WERS YUT :oowpo: 649217349GBT GB',
':oute: ((?:.(?!:))+)',
1
)
正则表达式示例:regex101
【讨论】:
( 和 ) 标记一个组。在这种情况下,它是第一个(也是唯一的)组,这就是为什么 regexp_extract 的第三个参数中的1 (使用组以便您可以指定要提取的匹配模式的哪一部分) 。 [^ ] 表示“任何不是空格的字符”。 + 表示“至少出现一次,但与找到的一样多”。如果您仍然不清楚,SO 是错误的地方,您需要阅读正则表达式教程。
. = 任何东西 (?!:) = 后面没有冒号。 => ((.(?!:))+) 我已经更新了答案,还有 regex101 演示。