我想写一个正则表达式来检测字符串“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
答案 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:]]
表示)。