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

相关问题