清理带有多个引号的文本,只留下一对
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)
"+
模式匹配一个或多个双引号,并用单引号替换块。
使用 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, '"+')
如何用必要的引号替换包含以下几个模式的文本?
Provide we with """"""""""""""""""""""""""""""""This is what matters"""""""""""""""""""""""""""""""".
结果应该是:
Provide we with "This is what matters".
我已经试过了,但效果不佳:
gsub("\"\"", "\"", txt)
此外,这些文本的引用次数也不尽相同,因此有的引用次数较少,有的引用次数更多。
当您多次连续出现时,将每对 ""
替换为 "
将导致多个连续的双引号仍保留在字符串中。您想要匹配 1 个或多个 "
个字符并替换为单个 "
,或者匹配并删除后跟 "
.
"
您可以使用
gsub('"+', '"', txt)
"+
模式匹配一个或多个双引号,并用单引号替换块。
使用 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, '"+')