2016-04-04 36 views
1
...,"My quote goes on 
to multiple lines 
like this",... 

我如何在正則表達式中捕獲這個?我想這樣做,在包含用正則表達式來捕捉多行報價

....,"My quote goes on to multiple lines like this",... 

結束了,我試過

"(?<!\")\r\n(?!\")" 

這是在試圖找到一個新行不以行情結束,下一行不不要以引號開頭。

下替換使用,沒有運氣,經常表達R來...

newDF = gsub("(?<!\")\r\n(?!\")", " ", newDF, perl = TRUE) 
+0

什麼是語言/工具? –

+0

將編輯。我正在使用R. gsub正在做的子。 – Jibril

回答

0

可以搭配帶引號的串,然後用gsubfn只更換引述子內換行:

library(gsubfn) 
s = "...,\"My quote goes on\r\nto multiple lines\r\nlike this\",..." 
gsubfn("\"[^\"]+\"", function(x) gsub("(?:\r?\n)+", " ", x), s) 
[1] "...,\"My quote goes on to multiple lines like this\",..." 

"[^"]+"模式匹配所有引用的子字符串,然後(?:\r?\n)+匹配一個或多個可選CR(\r?)的序列,後跟1個LF(用sp替換高手)。

或者,你也可以達到類似的結果與PCRE正則表達式像

gsub("(?:\r?\n)+(?!(?:[^\"]|\"[^\"]*\")*$)", " ", s, perl=T) 
[1] "...,\"My quote goes on to multiple lines like this\",..." 

regex demo(?!(?:[^\"]|\"[^\"]*\")*$)向前確保在字符串結尾處不存在引號。

0
> x <- "My quote goes on 
+ to multiple lines 
+ like this" 

> gsub("\\n", " ", x) 
[1] "My quote goes on to multiple lines like this" 

不要忘記加倍反斜槓。