我想从 12.1.0.2.170117 获取 PSU 12.1.0.2.170117 。模式 ([\d|\.]+) 似乎工作正常:https://regex101.com/r/bDCF0w/1

但是,它在 Oracle 的 regexp_replace: http://sqlfiddle.com/#!4/53d64e/77 中没有按预期工作。我错过了什么吗?为什么它也返回 PSU ,当我只有 \d\ 时。在我的表达?

我的文字也可以是 PSU SOMTHING SOMTHING 12.1.0.2.170117 AND HERE SOME.我的最终目标是同时阅读前 3 个点。

最佳答案

这是使用 REGEXP_REPLACE 执行此操作的一种方法
一个捕获组:

SELECT
    REGEXP_REPLACE('PSU 12.1.0.2.170117', '^.*?([0-9.]+).*$', '\1')
FROM dual;

上面的方法是隔离和捕获任意数量的点或数字。

关于regex - regexp_replace 的困难,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54821593/

10-09 18:11