有人可以解释这个regexp_substr正在做什么(oracle)

时间:2014-02-25 06:33:11

标签: sql regex string oracle

我有一个像这样的快速消息

"{1:kkkkkkkkkkkkkkkkkkkkkk}{2:kkkkkkkkkkkkkkkkkkkkkk}{4:
 :20:M000000043319452
 :25:kkkkkkkkkkkkkkkkkkkkkkUR
 :28C:00037/00012
 :60M:FGHYYGGGG,52
 :61:1402210221CR180,ABCDEFGHIJK//25-15974720-2}

所以我使用以下方法从28C标签中提取值00012。但是我无法理解它是如何工作的。请帮助详细说明

regexp_substr(msgswi, ':28C:.*?/(\S*)', 1, 1, '', 1)

1 个答案:

答案 0 :(得分:7)

细分模式。这很简单。

  • :28C:恰好匹配这四个字符。
  • .*?匹配零个或多个字符(任何字符),非贪婪。
  • /只匹配一个正斜杠字符。
  • (\S*)匹配并捕获零个或多个非空白字符。

所以在这种情况下,输入和模式之间有以下匹配:

  • :28C:匹配:28C:
  • 00037匹配.*?
  • /匹配/
  • 00012匹配\S*