簡體   English   中英

正則表達式以捕獲多行報價

[英]Regular Expression to Catch multi-line quote

...,"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)

您可以匹配帶引號的子字符串,然后使用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(用一個替換為空間)。

或者,您可以使用PCRE正則表達式獲得類似的結果

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

請參閱正則表達式演示 (?!(?:[^\\"]|\\"[^\\"]*\\")*$)前瞻確保字符串末尾沒有引號。

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

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

不要忘記加倍反斜杠。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM