sql - 正则表达式 - 无效的正则表达式 : '(?:[v=)' , 没有重复运算符的参数 :?

标签 sql regex snowflake-cloud-data-platform

我在 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/

相关文章:

javascript - 我的美国号码格式代码中的有趣行为

regex - 如何用单个空格替换换行符/换行符,但前提是它们在开始/结束正则表达式中?

javascript - 匹配javascript中的特定字符

php - 使用 PHP 从两个 mysql 表中选择数据

mysql - 从表中获取符合条件的多条记录

sql - 根据相似的配对值对行进行分组

mysql - 更新 MySQL 表 - 您不能在 From 子句中指定要更新的目标表

sql - 隔离特定字符串之前开始的字符串

pyspark - 当我编写 Pyspark 代码以连接 Snowflake 时出现错误

sql - 如何替换雪花中的重音字符?