Oracle SQL子字符串上有三个字符模式

时间:2016-10-19 12:41:09

标签: sql regex oracle

我需要从"One - Two-Two- Three-Three"之类的字符串中找到fisrt,第二和第三个子字符串,只需将它们分开" - "(第一个和最后一个字符为空格)。

我可以按"-"分割它们,例如:

regexp_substr(teenimi, '[^-]+', 1, 1 ) as a,
regexp_substr(teenimi, '[^-]+', 1, 2 ) as b,
regexp_substr(teenimi, '[^-]+', 1, 3 ) as c

给我的结果如下:One // Two // Two,但我需要One // Two-Two // Three-Three

1 个答案:

答案 0 :(得分:2)

您可以使用像

这样的正则表达式
[^- ]+(-[^- ]+)*

请参阅regex demo

匹配

  • [^- ]+ - 除-和空格
  • 以外的1个或多个字符
  • (-[^- ]+)* - 零个或多个序列
    • - - 连字符
    • [^- ]+ - 见上文。

基本上,它将匹配任何一侧没有空格的-和非空白字符。