2016-11-16 182 views
1

我想寫一個正則表達式來檢測字符串「el」(代表「消除」,並且是一堆格式不好的分數數據)。正則表達式來檢測由非字母字符分隔的字符串

例如

tests <- c("el", "hello", "123el", "el/27") 

在這裏,我正在尋找的結果TRUE, FALSE, TRUE, TRUE。我傷心的嘗試不顯而易見的原因工作:

library(stringr) 
str_detect(tests, "el") # TRUE TRUE TRUE TRUE 
str_detect(tests, "[^a-z]el") # FALSE FALSE TRUE FALSE 

回答

2

使用正則表達式(\\b|[^[:alpha:]])el(\\b|[^[:alpha:]])grepl一起:

> tests <- c("el", "hello", "123el", "el/27") 
> y <- grepl("(\\b|[^[:alpha:]])el(\\b|[^[:alpha:]])", tests) 
> y 
[1] TRUE FALSE TRUE TRUE 

您的el是否顯示爲一個實體的條件是雙方要麼有一個字邊界(\b)或非字母字符(由R中的字符類別[^[:alpha:]]表示)。

+0

我認爲你的安全取決於你想要什麼,例如'grepl(「(\\ b | [^ [:alpha:]])el(\\ b | [^ [:alpha:]])」 ,「123el27」)''和'!grepl(「\\ wel \\ w」,「123el27」)'給出不同的結果 – rawr

相關問題