Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 基于特定字符串匹配中断字符串_Regex_Oracle_Plsql_Oracle10g - Fatal编程技术网

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

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中作为一个简洁的函数来实现这一点,这样我就可以传

在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中作为一个简洁的函数来实现这一点,这样我就可以传入当前字符串并使用回车符/换行符返回新字符串。

我认为您不需要正则表达式。简单的替换就可以了

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来满足我的需求。干得好。谢谢