`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")`

. Use`regex()`

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 want`coll()`

which respects character matching rules for the specified locale.Match character, word, line and sentence boundaries with

`boundary()`

. An empty pattern, "", is equivalent to`boundary("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"
```