REGEXP_REPLACE不替换新字符



我需要替换所有新行后面没有冒号的实例。这是因为冒号表示新记录的开始(一条记录可能跨越多行(。

REGEXP_REPLACE(raw,'(n[^:])','this is a test')

例如,输入:

:[MY DATA HERE]
[rest of record printed here]

产生输出:

:[MY DATA HERE]
this is a testrest of record printed here]

而不是:

:[MY DATA HERE]this is a test[rest of record printed here]

请注意,当前输出将替换第一个非":"字符,而不是新行。有人知道为什么这没有像预期的那样起作用吗?

提前感谢

您正在替换换行符及其后的字符。您需要捕获其后的字符,并将其放入替换中。您可以使用number参考捕获组

REGEXP_REPLACE(raw,'n([^:])','this is a test1')

参见文件

Exasol还支持PCRE,因此您应该能够使用负面前瞻:

REPLACE_REGEXP(raw, 'n(?!:)', 'this is a test')

它们在一个细微的方面有所不同:您的regexp不会匹配字符串末尾的换行符,因为那里没有与[^:]匹配的内容。负面展望最终会匹配。

相关内容

  • 没有找到相关文章

最新更新