2017-07-21 42 views
1

我處理的兩個字符串這樣下面[R grepl並沒有進行區分,

 x1 <- "Unknown, because not discussed" 

     x2 <- "Not at goal, no." 

如何使用grepl功能這兩個字符串之間的區別?

當我使用grepl("no", x1)時,它顯示TRUE,這是不正確的。這是notUnknown中的否。如何使用字符串解析函數明確檢測字符串no?任何建議是非常感謝。

回答

3

您可以使用字邊界\\b來區分它們。 \\bno\\b將匹配no只是沒有前面和後面的字字符:

grepl("\\bno\\b", x1) 
# [1] FALSE 
grepl("\\bno\\b", x2) 
# [1] TRUE 
+0

做到了這一點。 :) –

3

我能想到幾個選項用於匹配「不」,而不是「不」:

使用\b「字邊界」模式:

> x = c("Unknown, because not discussed", "Not at goal, no.") 
> grepl("\\bno\\b", x) 
[1] FALSE TRUE 

使用[^t]排除 「不」:

> grepl("\\bno[^t]", x) 
[1] FALSE TRUE 

爲了自己匹配單詞「否」,字邊界選項"\\bno\\b"可能是最好的。