基于特定字符串匹配中断字符串

时间:2011-07-11 01:05:24

标签: regex oracle plsql oracle10g

我在Oracle中有以下字符串作为一个连续的行,而不是将此信息显示为一个连续的字符串,我实际上想要在出现“:F”和“:L之前附加一个回车符/换行符“,这也需要在F和L之前删除”:“

当前字符串:

F:AA BB:F:BB CC dd:F:ZZ Xx Y:L:Hello:F:Goodbye

新显示的字符串:

F:AA BB
F:BB CC dd
F:ZZ Xx Y
L:Hello
F:Goodbye

尝试在Oracle pl / sql中将其作为一个简洁的函数来实现,这样我就可以传入当前字符串并返回带有回车符/新换行符的新字符串。

3 个答案:

答案 0 :(得分:7)

我认为你不需要正则表达式。简单的替换应该可以解决问题。

new_val := REPLACE( REPLACE( string_val, ':F:', CHR(10)||'F:' )
                  , ':L:', CHR(10)||'L:' );

这给了unix风格的新线条。如果您想要Windows换行符,则需要使用CHR(13)||CHR(10)而不是CHR(10)

你也可以在查询中使用它。

答案 1 :(得分:1)

只是以regular expression replace方式投掷:

with TestData as(
select 'F:AA BB:F:BB CC dd:F:ZZ Xx Y:L:Hello:F:Goodbye' text from dual 
)

select testData.text , 
       REGEXP_REPLACE(testData.text, '(:)([F|L]+:)',CHR(13)||CHR(10) || '\2') REG_REP
  from testData

;
TEXT                                           REG_REP                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
---------------------------------------------- -----------
F:AA BB:F:BB CC dd:F:ZZ Xx Y:L:Hello:F:Goodbye F:AA BB                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                               F:BB CC dd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
                                               F:ZZ Xx Y                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
                                               L:Hello                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                               F:Goodbye  

 REGEXP_REPLACE(testData.text, '(:)([F|L]+:)',CHR(13)||CHR(10) || '\2')

()标记分组可能是替换为\ GroupPosition#

的引用
(:)([F|L]+:)

几乎是在说a:然后是F:或L:

CHR(13)||CHR(10) || '\2'

然后用“CHR(13)|| CHR(10)||”替换找到的文本+第二组

答案 2 :(得分:0)

使用regexp:

select REGEXP_REPLACE('F:AA BB:F:BB CC dd:F:ZZ Xx Y:L:Hello:F:Goodbye',
                       (\:+)(F|L{1})(\:+)',
                       chr(13)||chr(10)||'\2\3')
from dual;

更符合模式。