正则表达式 - 如何从列表中选择第一项
Posted
技术标签:
【中文标题】正则表达式 - 如何从列表中选择第一项【英文标题】:regex - how to select first item from list 【发布时间】:2018-03-19 23:53:13 【问题描述】:帮助!我对正则表达式一无所知,但我需要在我的 sql 查询(amazon redshift)中使用它。我有这样的列表:[1245,2324,4433] 我想获得第一个数字(1245)。我该怎么做?
问候
【问题讨论】:
试试regexp(col, '\\d+')
【参考方案1】:
select (regexp_matches('[1245,2324,4433]', '\d+'))[1]
说明:regexp_matches
从字符串中选择第一个数字 (\d+
),然后从返回的集合中选择第一个(也是唯一的)元素。
如果在所有 0 行中都找不到数字。
对于 RDS 来说
regexp_substr('[12456,232466,4433]','\\d+')
参考资料:
https://www.postgresql.org/docs/current/static/functions-string.html https://docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html https://docs.aws.amazon.com/redshift/latest/dg/pattern-matching-conditions-posix.html【讨论】:
我收到错误:[42883][500310] [Amazon](500310) 无效操作:函数 regexp_matches("unknown", "unknown") 不存在; java.lang.RuntimeException: com.amazon.support.exceptions.ErrorException: [Amazon](500310) 无效操作:函数 regexp_matches("unknown", "unknown") 不存在; @monika_w091 然后尝试regexp_substr
而不是docs.aws.amazon.com/redshift/latest/dg/REGEXP_SUBSTR.html
select (regexp_substr('[1245,2324,4433]', '\d+')), 结果:空行
select (regexp_substr('[12456,232466,4433]','[^,]*')),结果:[12456,如何删除“[”?
@monika_w091 尝试改用\\d+
正则表达式【参考方案2】:
你可以试试这个:
select replace(split_part('[1245,2324,4433]',',',1),'[','')
【讨论】:
这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review @GreatBigBore 你是什么意思?我不需要澄清,这个 sn-p 解决了从 Amazon Redshift 上提供的字符串中获取第一个元素的问题 该消息由审核系统自动生成;并非所有这些都适用于您。主要问题是真正的答案不是从“你可以尝试”开始的。此外,系统总是怀疑简短的答案,这会吸引更多的评论者,这可能会删除你的问题。如果您能想到要添加的任何有用信息,请添加。但不是填充物!祝你好运。以上是关于正则表达式 - 如何从列表中选择第一项的主要内容,如果未能解决你的问题,请参考以下文章