2012-07-30 61 views
5

我想清除包含轉義引號的字符串。我想刪除轉義引號字符串的結尾和開頭,但保留字符串中的所有qoutation標記完整。我想到的是以下內容。只有在兩者都存在的情況下,才能從字符串中刪除引號

library(stringr) 
s1 <- "\"He said:\"Hello\" - some word\"" 
str_replace_all(s1, "(^\\\")|(\\\"$)", "") 

> [1] "He said:\"Hello\" - some word" 

我現在所掙扎的是,我只是想去掉引號當且僅當有一個在開始和結尾。否則不是。下面的表達式會錯誤地刪除前面的那個。

s2 <- "\"Hello!\" he said" 
str_replace_all(s2, "(^\\\")|(\\\"$)", "") 

> [1] "Hello!\" he said" 

在這裏,我的正則表達式應該表明,我只想在整個字符串用轉義引號包裝的情況下刪除它們。我怎樣才能做到這一點?

回答

7

下面的正則表達式似乎對你的例子工作:

s <- c("\"He said:\"Hello\" - some word\"", "\"Hello!\" he said") 

正則表達式使用反向引用(\\1)返回領先的報價^\"和尾隨報價\"$裏面只有字符串:

r <- gsub("^\"(.*)\"$", "\\1", s) 

結果爲:

cat(r, sep="\n") 
He said:"Hello" - some word 
"Hello!" he said 
相關問題