regex - 是否有一种简单的方法来替换非数字字符配置单元,不包括 - 只允许 -ve 和 +ve 数字
问题描述
以下将给我 9090 但我希望得到 -9090
regexp_replace('abcd-9090',[^0-9],'')
如果我使用regexp_replace('abcd-9090',[^0-9-],'')
,那么它会给出 -9090 但是当字符串是abcd9090-
它会给我9090-
我猜可能会有更多的情况abc-abcd-9090
给我-9090
,但可以安全地假设情况并非如此,并且-
在数值之前只有一个。
由于可能有很多情况,我只是假设最好的情况,并用更正确的模式替换有缺陷的代码,这种模式几乎总是产生整数。
可能就像假设一个条件,-
在字符串中任何数字的开头只有一个是可以假设的。
任何帮助表示赞赏。
解决方案
我想您可以尝试regexp_extract
改用:
regexp_extract('abcd-9090','.*(-[0-9]+)',1)
来自评论的 UPD - 作者需要解决另一个极端情况:
regexp_extract(regexp_replace('-ab2cd9090','[^\\d-]+',''),'(-?\\d+)',1)
推荐阅读
- android - google ml kit 重复依赖
- android-studio - AndroidStudio 说无法识别启动活动:未找到默认活动”
- javascript - WASI-libc 在写入标准输入时等待用户输入
- node.js - 全新安装 nginx 超时,但服务正在运行
- r - 网页列表中的网页抓取,R中没有明确的分隔符
- python - 复制了数据帧,但是:“无法为非唯一标签获取正确的切片:时间戳”
- html - 如何使用 jinja2 和烧瓶在 html 页面上显示消息?
- java - 将主题应用于视图的背景颜色
- electron - 打包的电子应用程序未检测到目录外未打包 node.js 文件
- ios - NavigationLink 跳到一个特定的导航,没有菜单屏幕 - 同样,传递给不带参数的调用的参数