2015-10-09 140 views
2

我想知道如何在grepl中插入特定的排除模式。具有特定排除的R-grepl

讓我們想象一下,我想查找WHAM

vec = c("WHAM VIDEO", "WHAM RAP", "WHAM", "HOTELNEWHAMP") 
vec[grepl("WHAM", vec)] 

我得到的是

[1] "WHAM VIDEO" "WHAM RAP"  "WHAM"   "HOTELNEWHAMP" 

我可以看到HOTELNEWHAMP是國外的。

我該如何才能vec[grepl("WHAM", vec)]並明確指出我不想要HOTELNEWHAMP

(不是這vec[!grepl("HOTELNEWHAMP", vec)],因爲我的真實向量包括更多的變量)。

謝謝

回答

3

使用字邊界。

vec = c("WHAM VIDEO", "WHAM RAP", "WHAM", "HOTELNEWHAMP") 
vec[grepl("\\bWHAM\\b", vec)] 
# [1] "WHAM VIDEO" "WHAM RAP" "WHAM" 

vec[grepl("(?<!\\S)WHAM(?!\\S)", vec, perl=TRUE)] 
# [1] "WHAM VIDEO" "WHAM RAP" "WHAM" 
+0

偉大的回答謝謝。但是,我怎樣才能確定一個特定的詞,而不是我所知? – giacomo

+0

不知道你上面的評論是什麼意思。 –

+0

對不起,我的意思是實際上有一些詞我想明確排除。還有另外一個例子,我正在使用「新聞」這個詞,我想明確地排除其中的一些,如「世界新聞」,但不是「世界新聞」。希望我更清楚。謝謝你的幫助 ! – giacomo