我在 Snowflake 中使用了这个查询:
Select *,
case WHEN REGEXP_SUBSTR(NAME, '(?:\[v=)') is not null THEN REGEXP_SUBSTR(NAME, '[[]v=([0-9]+)')
else null
end
from my_table;
但是当我尝试运行它时,它告诉我:
Invalid regular expression: '(?:[v=)', no argument for repetition operator: ?
但我已经在 regex101 here 上测试过了它看起来正常,我想检查 [v=
编辑:更深入地了解我试图找到的内容。正则表达式,我有这样的行 test [v=123]
, words [v=444]
, more [v=532]
并且我需要能够查看每一列并查找它是否具有 [v=
并仅提取数字
最佳答案
你可以使用
SELECT *, REGEXP_SUBSTR(Name, '[[]v=([0-9]+)', 1, 1, 'e') from my_table;
这里,
[[]v=([0-9]+)
匹配[v=
然后捕获一个或多个数字到第 1 组1, 1, 'e'
表示我们从第一个字符开始匹配,出现一次,e
使引擎获取第 1 组值(它是默认值,如果您需要第 2 组(如果您在模式中有它)值,您将添加另一个参数,并使用REGEXP_SUBSTR(Name, '[[](v|V)=([0-9] +)', 1, 1, 'e', 2)
).
关于sql - 正则表达式 - 无效的正则表达式 : '(?:[v=)' , 没有重复运算符的参数 :?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68536668/