REGEXP_REPLACE - 如果包含在()中,则仅从字符串中删除新行\ n

时间:2013-03-01 19:22:49

标签: sql regex oracle plsql

我正在尝试使用REGEXP_REPLACE从字符串中替换所有新行(\ n),但有一个例外 - 它们必须括在括号中以便替换。

示例:

字符串之前:

'a\n, b\n, c (a\n, b, c\n), d\n, e'
var1 := 'a
, b
, c (a
, b, c
), d
, e'

字符串后:

'a\n, b\n, c, (a b c), d\n, e'
var2 := 'a
, b
, c (a, b, c), d
, e'

我知道必须有一个干净的正则表达式模式可以做到这一点 - 但我无法理解它。

非常感谢......

1 个答案:

答案 0 :(得分:2)

var2 := regexp_replace(var1, '((\)|^).*?(\(|$))|'||chr(10), '\1', 1, 0, 'n');