Разбить строку на основе конкретного соответствия строки - PullRequest
1 голос
/ 11 июля 2011

У меня есть следующая строка в 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 ]

7 голосов
/ 11 июля 2011

Я не думаю, что вам нужно регулярное выражение.Простая замена должна помочь.

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

Это дает новые строки в стиле Unix.Если вы хотите переводить строки в Windows, тогда вам нужно использовать CHR(13)||CHR(10) вместо просто CHR(10).

И вы можете использовать это тоже самое в запросе.

1 голос
/ 12 июля 2011

И просто добавить регулярное выражение заменить путь:

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]+:)

в значительной степени говорит: ищите: с последующим F: или L:

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

затем замените найденный текст на «CHR (13) || CHR (10) ||» + вторая группа

0 голосов
/ 24 января 2013

Использование регулярного выражения:

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;

лучше соответствует шаблону.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...