The goal of RVerbalExpressions
is to make it easier to construct regular expressions using grammar and functionality inspired by VerbalExpressions. Usage of %>%
is encouraged to build expressions in a chain like fashion.
There are a couple of functions missing from the original JSVerbalExpressions:
replace
isn’t included because there are numerous R functions for this, gsub
being one exampleadd
is a utility function for appending expressions to one another and isn’t included because we use %>%
for thatthen
is not included because the pipe %>%
is often pronounced “then” and rx_find
provides the same functionalityany
is not included because it collides with base::any()
and rx_any_of
provides the same functionalityOthers just haven’t made it yet, see here.
You can install RVerbalExpressions
from GitHub with:
# install.packages("devtools")
devtools::install_github("VerbalExpressions/RVerbalExpressions")
This is a basic example which shows you how to build a regular expression:
library(RVerbalExpressions)
# construct an expression
x <- rx_start_of_line() %>%
rx_find('http') %>%
rx_maybe('s') %>%
rx_find('://') %>%
rx_maybe('www.') %>%
rx_anything_but(' ') %>%
rx_end_of_line()
x
#> [1] "^(?:http)(?:s)?(?:\\://)(?:www\\.)?(?:[^ ]*)$"
grepl(x, "https://www.google.com")
#> [1] TRUE
You can see an up to date list of all ports on VerbalExpressions.github.io.
Additionally, there are two R packages that try to solve the same problem. I encourage you to check these out:
If you find any issues, please file an issue or submit a PR. All contributions are welcome! See the list of todo items here if you’re looking for something to specific to work on.