This release includes a change to the API: str_match_all() now returns NA if an optional group doesn’t match (previously it returned ""). This is more consistent with str_match() and other match failures.
x <- c("a=1,b=2", "c=3", "d=")
x %>% str_match("(.)=(\\d)?")
#> [,1] [,2] [,3]
#> [1,] "a=1" "a" "1"
#> [2,] "c=3" "c" "3"
#> [3,] "d=" "d" NA
x %>% str_match_all("(.)=(\\d)?,?")
#> [[1]]
#> [,1] [,2] [,3]
#> [1,] "a=1," "a" "1"
#> [2,] "b=2" "b" "2"
#>
#> [[2]]
#> [,1] [,2] [,3]
#> [1,] "c=3" "c" "3"
#>
#> [[3]]
#> [,1] [,2] [,3]
#> [1,] "d=" "d" NAThere are three new features:
In str_replace(), replacement can now be a function that is called once for each match and who’s return value is used to replace the match.
New str_which() mimics grep():
A new vignette (vignette("regular-expressions")) describes the details of the regular expressions supported by stringr. The main vignette (vignette("stringr")) has been updated to give a high-level overview of the package.
There were three other minor improvements and bug fixes:
str_order() and str_sort() gain explicit numeric argument for sorting mixed numbers and strings.
str_replace_all() now throws an error if replacement is not a character vector. If replacement is NA_character_ it replaces the complete string with NA.
All functions that take a locale (e.g. str_to_lower() and str_sort()) default to “en” (English) to ensure that the default is consistent across platforms.