str_subset()
returns all elements of string
where there's at least
one match to pattern
. It's a wrapper around x[str_detect(x, pattern)]
,
and is equivalent to grep(pattern, x, value = TRUE)
.
Use str_extract()
to find the location of the match within each string.
Arguments
- string
Input vector. Either a character vector, or something coercible to one.
- pattern
Pattern to look for.
The default interpretation is a regular expression, as described in
vignette("regular-expressions")
. Useregex()
for finer control of the matching behaviour.Match a fixed string (i.e. by comparing only bytes), using
fixed()
. This is fast, but approximate. Generally, for matching human text, you'll wantcoll()
which respects character matching rules for the specified locale.Match character, word, line and sentence boundaries with
boundary()
. An empty pattern, "", is equivalent toboundary("character")
.- negate
If
TRUE
, inverts the resulting boolean vector.
See also
grep()
with argument value = TRUE
,
stringi::stri_subset()
for the underlying implementation.
Examples
fruit <- c("apple", "banana", "pear", "pineapple")
str_subset(fruit, "a")
#> [1] "apple" "banana" "pear" "pineapple"
str_subset(fruit, "^a")
#> [1] "apple"
str_subset(fruit, "a$")
#> [1] "banana"
str_subset(fruit, "b")
#> [1] "banana"
str_subset(fruit, "[aeiou]")
#> [1] "apple" "banana" "pear" "pineapple"
# Elements that don't match
str_subset(fruit, "^p", negate = TRUE)
#> [1] "apple" "banana"
# Missings never match
str_subset(c("a", NA, "b"), ".")
#> [1] "a" "b"