如何搜索多个换行符后跟特定字符串
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
【讨论】:
以上是关于如何搜索多个换行符后跟特定字符串的主要内容,如果未能解决你的问题,请参考以下文章