清理带有多个引号的文本,只留下一对

Cleaning a text with several quotation marks leaving just a pair of them

如何用必要的引号替换包含以下几个模式的文本?

Provide we with """"""""""""""""""""""""""""""""This is what matters"""""""""""""""""""""""""""""""".

结果应该是:

Provide we with "This is what matters".

我已经试过了,但效果不佳:

 gsub("\"\"", "\"", txt)

此外,这些文本的引用次数也不尽相同,因此有的引用次数较少,有的引用次数更多。

当您多次连续出现时,将每对 "" 替换为 " 将导致多个连续的双引号仍保留在字符串中。您想要匹配 1 个或多个 " 个字符并替换为单个 ",或者匹配并删除后跟 ".

的任何 "

您可以使用

gsub('"+', '"', txt)

R demo

"+ 模式匹配一​​个或多个双引号,并用单引号替换块。

使用 stringr::str_remove_all,您可以使用正则表达式匹配任何 " 后跟 ":

library(stringr)
str_remove_all(txt, '"(?=")')

regex demo。此处的正则表达式包含一个 (?=") 正向前瞻,需要在当前位置的右侧立即存在 "

可以使用 PCRE 正则表达式在 base R 中传达相同的概念(使用 perl=TRUE):

gsub('"(?=")', '"', txt, perl=TRUE)

选项str_remove_all

library(stringr)
str_remove_all(txt, '"+')