特定字符后的所有字符的Oracle正则表达式

时间:2014-06-06 02:28:36

标签: oracle

我需要从最后一个'R'之后获取所有字符,如下所示:

223A GHH R337716

到目前为止,我已经:

 REGEXP_SUBSTR(CUST_PART_NO,'R(.*)')

这会返回R337716,但我不想要'R',如果字符串中有多个'R',我不确定它是否会起作用。

2 个答案:

答案 0 :(得分:5)

然后你必须用这样的表达式组替换字符串:

regexp_replace( CUST_PART_NO, '(.*)(R)(.*)', '\3' )

在sqlfiddle上查看:http://sqlfiddle.com/#!4/3ec77/2

我对这个表达的看法是:

  • 获取所有内容,直到R将其作为第1组表达式(.*)
  • 获取R将其设为第二组(R)
  • 获取其他所有内容并将其设为第三组(.*)

正则表达式的括号定义表达式组。

答案 1 :(得分:0)

怎么样?
ltrim(REGEXP_SUBSTR(CUST_PART_NO,'R(.*)'), 'R')