PL/SQL Regex 查找最后一个数字并拆分

Posted

技术标签:

【中文标题】PL/SQL Regex 查找最后一个数字并拆分【英文标题】:PL/SQL Reg Exp found last number and split 【发布时间】:2012-04-26 04:19:56 【问题描述】:

如何使用 reg 表达式找到字符串中的最后一个数字,然后将右侧的所有内容放入 c1 列,然后从最后一个数字将左侧的所有内容 + 1 个字符放入 c2 列?

例如 1

string = 1234john4345 this is a test.

结果

c1 = 1234john4345  
c2 = this is a test.

例如 2

string = 1234john4345a this is a test.

结果

c1 = 1234john4345a  
c2 = this is a test.

【问题讨论】:

【参考方案1】:
select test
    --Group 1: Match everything up to the last digit, and one other character
    --Group 2: Everything after group 1
    ,regexp_replace(test, '(.*[[:digit:]].)(.*)', '\1') c1
    ,regexp_replace(test, '(.*[[:digit:]].)(.*)', '\2') c2
from
(
    select '1234john4345 this is a test.' test from dual union all
    select '1234john4345a this is a test' test from dual
);

【讨论】:

以上是关于PL/SQL Regex 查找最后一个数字并拆分的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PL SQL 过程需要修改以接受具有所有类型字符的数组并拆分

查找字符串中最后一次出现的数字,并按该值拆分字符串

正则表达式:如何在 PL/SQL 中实现负向后查找

在 C++ 中使用 regex/boost 查找 2 个数字之间的数字

Oracle PL/SQL 程序在源表中拆分逗号分隔的数据并推送到目标表中

Pl/SQL 拆分表