2016-11-16 5 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

greplと一緒に正規表現(\\b|[^[:alpha:]])el(\\b|[^[:alpha:]])を使用します:

> 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 | [^ [: 、 "123el27") 'と!grepl(" \\ wel \\ w "、" 123el27 ")'異なる結果を返す – rawr

関連する問題