Vectorised over string
and pattern
. If the match is of length
0, (e.g. from a special match like $
) end will be one character less
than start.
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 stringi::stringi-search-regex. Control options with
regex()
.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")
.
Value
For str_locate
, an integer matrix. First column gives start
postion of match, and second column gives end position. For
str_locate_all
a list of integer matrices.
See also
str_extract()
for a convenient way of extracting matches,
stringi::stri_locate()
for the underlying implementation.
Examples
fruit <- c("apple", "banana", "pear", "pineapple")
str_locate(fruit, "$")
#> start end
#> [1,] 6 5
#> [2,] 7 6
#> [3,] 5 4
#> [4,] 10 9
str_locate(fruit, "a")
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 5 5
str_locate(fruit, "e")
#> start end
#> [1,] 5 5
#> [2,] NA NA
#> [3,] 2 2
#> [4,] 4 4
str_locate(fruit, c("a", "b", "p", "p"))
#> start end
#> [1,] 1 1
#> [2,] 1 1
#> [3,] 1 1
#> [4,] 1 1
str_locate_all(fruit, "a")
#> [[1]]
#> start end
#> [1,] 1 1
#>
#> [[2]]
#> start end
#> [1,] 2 2
#> [2,] 4 4
#> [3,] 6 6
#>
#> [[3]]
#> start end
#> [1,] 3 3
#>
#> [[4]]
#> start end
#> [1,] 5 5
#>
str_locate_all(fruit, "e")
#> [[1]]
#> start end
#> [1,] 5 5
#>
#> [[2]]
#> start end
#>
#> [[3]]
#> start end
#> [1,] 2 2
#>
#> [[4]]
#> start end
#> [1,] 4 4
#> [2,] 9 9
#>
str_locate_all(fruit, c("a", "b", "p", "p"))
#> [[1]]
#> start end
#> [1,] 1 1
#>
#> [[2]]
#> start end
#> [1,] 1 1
#>
#> [[3]]
#> start end
#> [1,] 1 1
#>
#> [[4]]
#> start end
#> [1,] 1 1
#> [2,] 6 6
#> [3,] 7 7
#>
# Find location of every character
str_locate_all(fruit, "")
#> [[1]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#> [5,] 5 5
#>
#> [[2]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#> [5,] 5 5
#> [6,] 6 6
#>
#> [[3]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#>
#> [[4]]
#> start end
#> [1,] 1 1
#> [2,] 2 2
#> [3,] 3 3
#> [4,] 4 4
#> [5,] 5 5
#> [6,] 6 6
#> [7,] 7 7
#> [8,] 8 8
#> [9,] 9 9
#>