正则表达式检测由非字母字符分隔的字符串(或什么都不是)

时间:2016-11-16 05:10:05

标签: r regex

我想写一个正则表达式来检测字符串“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

1 个答案:

答案 0 :(得分: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:]]表示)。