首页 > 解决方案 > 是否有一种简单的方法来替换非数字字符配置单元,不包括 - 只允许 -ve 和 +ve 数字

问题描述

以下将给我 9090 但我希望得到 -9090

regexp_replace('abcd-9090',[^0-9],'')

如果我使用regexp_replace('abcd-9090',[^0-9-],'') ,那么它会给出 -9090 但是当字符串是abcd9090-它会给我9090-

我猜可能会有更多的情况abc-abcd-9090给我-9090,但可以安全地假设情况并非如此,并且-在数值之前只有一个。

由于可能有很多情况,我只是假设最好的情况,并用更正确的模式替换有缺陷的代码,这种模式几乎总是产生整数。

可能就像假设一个条件,-在字符串中任何数字的开头只有一个是可以假设的。

任何帮助表示赞赏。

标签: regexhive

解决方案


我想您可以尝试regexp_extract改用:

regexp_extract('abcd-9090','.*(-[0-9]+)',1)

来自评论的 UPD - 作者需要解决另一个极端情况:

regexp_extract(regexp_replace('-ab2cd9090','[^\\d-]+',''),'(-?\\d+)',1)


推荐阅读