使用Oracle regexp_replace替换字符后的所有出现次数

时间:2021-01-23 09:26:48

I want to replace ALL ', with '|| .However, I only replace ', that show up after the very first word begin (case insensitive). We might have multiple BEGIN, but once I meet the word begin for the first time, I want to replace all occurrences AFTER begin.

我想用'||替换ALL' 。但是,我只替换',在第一个单词开头后出现(不区分大小写)。我们可能有多个BEGIN,但是一旦我第一次遇到单词begin,我想要在开始之后替换所有出现的内容。

Here is my code that replaces ALL without exception:

这是我的代码,无异常替换ALL:

regexp_replace(column_name, ''',', '''||', 1, 0, 'i');

Thanks

1 个解决方案

#1


2  

You could simply find the position of the first word begin in your column and add to position parameter of regexp_replace

您可以在列中找到第一个单词begin的位置,并添加到regexp_replace的position参数

So you should use this

所以你应该使用它

regexp_replace(column_name, ''',', '''||', regexp_instr(column_name, '\sbegin\s', 1, 1, 0, 'i'), 0, 'i');

Editted: According to suggestion from Gary_W, you should consider using keyword '\sbegin\s' (updated in above code) to avoid finding wrong word when begin is part of another word like function get_beginning_status.

编辑:根据Gary_W的建议,您应该考虑使用关键字'\ sbegin \ s'(在上面的代码中更新),以避免在begin是另一个单词(如函数get_beginning_status)的一部分时找到错误的单词。

P/S: Using \s instead of non-breaking-space in case string text in column_name have line break

P / S:如果column_name中的字符串文本有换行符,则使用\ s而不是非中断空格

#1


2  

You could simply find the position of the first word begin in your column and add to position parameter of regexp_replace

您可以在列中找到第一个单词begin的位置,并添加到regexp_replace的position参数

So you should use this

所以你应该使用它

regexp_replace(column_name, ''',', '''||', regexp_instr(column_name, '\sbegin\s', 1, 1, 0, 'i'), 0, 'i');

Editted: According to suggestion from Gary_W, you should consider using keyword '\sbegin\s' (updated in above code) to avoid finding wrong word when begin is part of another word like function get_beginning_status.

编辑:根据Gary_W的建议,您应该考虑使用关键字'\ sbegin \ s'(在上面的代码中更新),以避免在begin是另一个单词(如函数get_beginning_status)的一部分时找到错误的单词。

P/S: Using \s instead of non-breaking-space in case string text in column_name have line break

P / S:如果column_name中的字符串文本有换行符,则使用\ s而不是非中断空格