【发布时间】:2021-05-19 20:36:29
【问题描述】:
我正在使用函数 regexp_extract 在 Presto SQL 中编写查询
我有一个可能类似于以下示例的字符串:
'1A2B2C3D3E'
'1A1B2C2D3E'
'1A2B1C2D2E'
我要做的是找到例如 second 出现的 1[A-E]。
如果我尝试
regexp_extract(col, '(1[A-E])(1[A-E])', 2)
这将适用于第二个示例(第一个示例,因为它没有返回任何内容,因为没有第二次出现)。但是,这对于第三个示例将失败。它什么也不返回。我知道这是因为我的正则表达式正在搜索一个 1[A-E],直接 后面跟着另一个 1[A-E]。
然后我尝试了
regexp_extract(col, '(1[A-E])(.*)(1[A-E])', 3)
但这也不起作用。我不确定如何解释我可能有 1A1B2C 或 1A2B1C 来找到第二个 1。有什么帮助吗?
【问题讨论】:
-
我不了解 Presto,但您的第二种模式看起来应该可以工作。唯一的问题是您应该使用惰性量词(即
.*?而不是.*)否则第 3 组将包含 last 出现,不一定是 second一。 “不起作用”到底是什么意思?你有任何结果吗?