如何搜索多个换行符后跟特定字符串

Posted

技术标签:

【中文标题】如何搜索多个换行符后跟特定字符串【英文标题】:how to search for multiple newline characters followed by specific string 【发布时间】:2015-11-24 04:14:51 【问题描述】:

这是关于 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/',但它似乎不起作用。

我希望看到一个带有一点解释的答案,以便我也可以学习:)

【问题讨论】:

【参考方案1】:

在使用 CHR() 函数构建这样的搜索字符串时,您需要连接换行符:

注意正则表达式中的加号表示前一个字符(换行符)的“一个或多个”。要指定 2 个或更多,请使用 2,,如下所示:replace multiple line breaks with one new line charatcer in oracle server using REGEXP_REPLACE

【讨论】:

【参考方案2】:

好吧,我不确定你的数据库的语法,但对于普通的旧 PCRE 正则表达式,你的尝试是寻找前面有 anything but 换行符的字符串。试试这个:

\n+notes://MYTEST/

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

注意那里的斜线被转义了;不过,根据您的问题,这似乎不是您的应用程序的要求。

【讨论】:

【参考方案3】:

你可以用这个。

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

【讨论】:

以上是关于如何搜索多个换行符后跟特定字符串的主要内容,如果未能解决你的问题,请参考以下文章

用于定位回车换行符的正则表达式后跟除 8 位数字和 | 之外的任何内容

如何从字符串的开头和结尾删除换行符?

常量中有换行符怎么办?

如何用 <br/> 替换某些回车换行符后跟破折号?

使用 pyUNO 搜索字符串和换行符

将文字反斜杠后跟一个字符转换为相应的转义序列