„Chciałbym napisać wyrażenie regularne, aby wykryć ciąg„ el ”(oznacza„ wyeliminowany ”i znajduje się w grupie źle sformatowanych danych wyników).
Na przykład
tests <- c("el", "hello", "123el", "el/27")
Tutaj szukam rezultatu TRUE, FALSE, TRUE, TRUE
. Moje smutne próby, które nie działają z oczywistych powodów:
library(stringr)
str_detect(tests, "el") # TRUE TRUE TRUE TRUE
str_detect(tests, "[^a-z]el") # FALSE FALSE TRUE FALSE
Odpowiedzi:
2 dla odpowiedzi № 1Użyj wyrażenia regularnego (\b|[^[:alpha:]])el(\b|[^[:alpha:]])
wraz z grepl
:
> tests <- c("el", "hello", "123el", "el/27")
> y <- grepl("(\b|[^[:alpha:]])el(\b|[^[:alpha:]])", tests)
> y
[1] TRUE FALSE TRUE TRUE
Twój warunek, czy el
wygląda na to, że obie strony mają granicę słów (b
) lub znak inny niż alfa (reprezentowany przez klasę znaków [^[:alpha:]]
w R).