在 redshift 中使用正则表达式查找美元值

数据挖掘 红移 正则表达式
2022-03-15 13:30:37

我在 Redshift 表中有一个字段,其中包含用户生成的文本。用户可以在该字段中说出他们认为某样东西的成本是多少。

理想情况下,它只是一个小数,但它是 varchar。因此用户可以输入“我认为这值25美元”、“我愿意支付 55 美元”或“ 117美元”。

所以我试图用它regexp_substr来把它拉出来。具体来说regexp_substr(f.comment_text, '\\$?[0-9]*')Could do for $115但是由于某些原因(例如),这不适用于条目的子集。

如果我删除?它,它会起作用,但不再适用于不使用的条目$为什么?我应该改用什么?

1个回答

我知道你想用'$'或者甚至不用美元来提取数字。

为什么不在该字段中仅使用 [0-9]+ ?结果会像

    some $1 something >> ['1']
    some other 115 >> ['115']
    $115 some thing >> ['115']

如果你想包含' $ '符号,那么' $ '可以重复零次或一次或通过错字更多,那么正则表达式将是

    \$*[0-9]+

哪个输出

    some $1 something >> ['$1']
    some other 115 >> ['115']
    $115 some thing >> ['$115']

如果这不是您想要的,请发表评论。

希望这可以帮助。

我建议使用像这里这样的在线正则表达式匹配器。他们有简短而甜蜜的参考,真正帮助我们了解上下文。