2017-02-01 57 views
1

我試圖替換除「」之外的所有標點符號和「不是單詞」。和「 - 」在一個字符串中,但我正在努力尋找正確的組合來設置正則表達式。R str_replace_all除句點和破折號外

我一直在R中使用以下str_replace_all()代碼,但現在我想指定忽略「。」和「 - 」。我試着設置它來包含諸如[^ .-]和([.-])之類的東西,但我沒有得到所需的輸出。

str_replace_all("[APPLE/O.ORANGE*PLUM-11]", regex("[\\W+,[:punct:]]", perl=T)," ") 

" APPLE O ORANGE PLUM 11 " #current output 

" APPLE O.ORANGE PLUM-11 " #desired output 

任何建議將不勝感激。謝謝!

+1

錯誤:找不到函數「str_replace_all」。在詢問非基本R函數時,您應指定使用哪些軟件包。 –

回答

8

使用^可能更容易,這意味着它匹配括號內未引用的所有內容。通過在文本框中包含所有字母,數字,...和 ​​- 您不會替換這些。

library(stringr) 
str_replace_all("[APPLE/O.ORANGE*PLUM-11]", "[^a-zA-Z0-9.-]"," ") 
+0

完美,謝謝! – SC2

0

注意str_replace_all不允許使用PCRE模式中,stringr library是ICU正則表達式供電。

你需要做什麼可以使用以下模式的基礎R gsub來完成:

> x<-"[APPLE/O.ORANGE*PLUM-11]" 
> gsub("[^\\w.-]", " ", x, perl=TRUE) 
[1] " APPLE O.ORANGE PLUM-11 " 

R demo online。另請參閱regex online demo here

[^\\w.-]圖案以外的任何字符相匹配(因爲[^...]是一個否定的字符類)字字符(字母,數字,_),.-