2015-11-24 4 views
0

Речь идет о PLSQL.как искать несколько символов новой строки, за которыми следует конкретная строка

Мне нужно найти ниже узор и заменить его пространством.

\n\n\nnotes://MYTEST/\n\n 

источник например строка что-то вроде:

source = "My string\n\n\nnotes://MYTEST/\n\nMy string continues" 

результат из замены следует производить:

result = "My string My string continues" 

Я хотел бы знать, как получить это сделать.

Я пробовал '[^\n]notes://MYTEST/', но он не работает.

Я хотел бы видеть ответ с немного объяснения, так что я могу узнать, как хорошо :)

ответ

0

Вы хотите, чтобы сцепить символ новой строки при построении строки поиска, как это с помощью CHR() функции:

enter image description here

Обратите внимание на знак плюс в регулярном выражении означает «один или больше "предыдущего символа (новая строка). Чтобы указать 2 или более использования {2,}, как показано здесь: replace multiple line breaks with one new line charatcer in oracle server using REGEXP_REPLACE

0

Ну, я не уверен, что синтаксис вашей базы данных, но и для простого старого PCRE регулярного выражения, вашу попытки ищет строку, которой предшествует ничего, кроме a newline. Попробуйте это:

\n+notes://MYTEST/ 

https://regex101.com/r/yO4eX1/1

Обратите внимание на слэш там уцелевших; похоже, это не является требованием для вашего приложения, хотя, исходя из вашего вопроса.

0

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

select regexp_replace(column_name,'(\\n)+notes://MYTEST/(\\n)+', ' ') 
from table; 

(\\n)     :\ is operator and should be escaped by another \ 
    +     :matches one or more of previous pattern group 
notes://MYTEST/   :exact match of your string 
(\\n)     :\ is operator and should be escaped by another \ 
    +     :matches one or more of previous pattern group 
Смежные вопросы