2017-08-01 162 views
-1

我有15個字符後面的轉義字符(\ n)來分隔單詞的正則表達式。如果以只有一個字符結束,我需要從字符串中刪除最後一個特殊字符(以下示例字符串以括號結尾)。刪除r中的最後一個特殊字符

m <- gregexpr(pattern = paste("(.{1,",15,"}\\b|.{",1,"})",sep = ""), text = txt, perl = TRUE) 
split_txt = trimws(unlist(regmatches(x = txt, m = m))) 
paste(split_txt, collapse = "\n") 

這導致到:

Client News V2\n(design, AI\n) 

這應該是所需的輸出:

Client News V2\n(design, AI) 

有沒有一種簡單的方法怎麼辦呢?提前謝謝了。

+0

什麼是'txt'? 'txt < - 「客戶端新聞V2(設計,AI)」'? –

+0

在該變量中,\ n是什麼意思?它是字面的,還是你在單行中表示換行符的方式? –

+0

我以某種方式解釋了您的問題,導致[此演示](http://rextester.com/TFS53903)...不知道這是您的想法。 –

回答

1

您可以使用sub用正則表達式\ n(。)$,其捕捉跟換行字符的最後一個字符,並替換最後兩個與它(即如果是跟着僅刪除最後一個換行符另一個字符在末尾):

s = "Client News V2\n(design, AI\n)" 
sub("\n(.)$", "\\1", s) 
# [1] "Client News V2\n(design, AI)" 
+1

太好了,非常感謝! – martinkabe

+0

一個問題:有什麼辦法可以刪除每個括號中的所有特殊字符(\ n): 例如:客戶端(新聞\ n)V2(設計,AI \ n) - >客戶端(新聞)V2 ,AI) – martinkabe

+0

你可以試試'gsub(「\ n(?= [^(] * \\))」,「」,s,perl = T)'from [here](https://stackoverflow.com /問題/ 29610585 /刪除特定的字符-內部-括號-使用正則表達式)。 – Psidom