我想从 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/