使用REGEXP_REPLACE获取字符串匹配模式

时间:2013-09-04 20:08:41

标签: regex oracle oracle11g

我有这个字符串:ABC1111|~@SERIAL_NUM_ONE@~|~@SERIAL_NUM_TWO@~|~@SERIAL_NUM_THREE@~

现在我想用~@anything@~替换~@,以便我的字符串如下所示:ABC1111|~@|~@|~@

我如何在Oracle中执行此操作?我认为我们应该使用REGEXP_REPLACE来完成这项工作!但无法弄明白。请帮帮我。

1 个答案:

答案 0 :(得分:0)

regexp_replace('ABC1111|~@SERIAL_NUM_ONE@~|~@SERIAL_NUM_TWO@~|~@SERIAL_NUM_THREE@~',
               '~@.+?@~',
               '~@') 
  • .+?是非贪婪的表达式,并返回ABC1111|~@|~@|~@
  • .+是贪婪的表达,尽可能多地尝试并返回ABC1111|~@

sqlfiddle的演示。