Regex 基于特定字符串匹配中断字符串
在Oracle中,我将以下字符串作为一个连续的行,而不是将此信息显示为一个连续的字符串,实际上我希望在“:F”和“:L”出现之前附加一个回车/换行符,这也需要删除“:”在“F”和“L”之前 因此,当前字符串:Regex 基于特定字符串匹配中断字符串,regex,oracle,plsql,oracle10g,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中作为一个简洁的函数来实现这一点,这样我就可以传
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中作为一个简洁的函数来实现这一点,这样我就可以传入当前字符串并使用回车符/换行符返回新字符串。我认为您不需要正则表达式。简单的替换就可以了
new_val := REPLACE( REPLACE( string_val, ':F:', CHR(10)||'F:' )
, ':L:', CHR(10)||'L:' );
这给了unix风格的新行。如果需要windows换行符,则需要使用CHR13 | | CHR10,而不仅仅是CHR10
您也可以在查询中同样使用它。我认为您不需要正则表达式。简单的替换就可以了
new_val := REPLACE( REPLACE( string_val, ':F:', CHR(10)||'F:' )
, ':L:', CHR(10)||'L:' );
这给了unix风格的新行。如果需要windows换行符,则需要使用CHR13 | | CHR10,而不仅仅是CHR10
您也可以在查询中使用同样的方法。并以某种方式抛出:
标记可能是替换为\GroupPosition中引用的分组
(:)([F|L]+:)
基本上是说寻找a:后跟F:或L:
CHR(13)||CHR(10) || '\2'
然后将找到的文本替换为CHR13 | | CHR10 | |+第二组并以某种方式抛出:
标记可能是替换为\GroupPosition中引用的分组
(:)([F|L]+:)
基本上是说寻找a:后跟F:或L:
CHR(13)||CHR(10) || '\2'
然后使用regexp将找到的文本替换为CHR13 | | CHR10 | |+第二组:
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;
更好地匹配模式。使用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;
更好地匹配模式。Perfecto@Sodved-我只是需要添加CHR13 | | CHR10以满足我的需求。干得好。谢谢。Perfecto@Sodved-我只需要添加CHR13 | | CHR10来满足我的需求。干得好。谢谢