The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
Regular expressions are very powerful feature, however they are often difficult to interpret. Rex allows you to build complex regular expressions from human readable expressions. So instead of writing (and later trying to decipher)
<- "^(?:(((?:[^:])+)://))?((?:(?:(?!:/).)*)+)(?:(:([[:digit:]]+)))?(?:(/.*))?$" r
You can write
<- rex(
r
start,
## match the protocol -- may exist or may not
maybe(capture(
capture(except_some_of(":")),
"://"
)),
## match the path
capture(one_or_more(not(":/"))),
## get the port
maybe(capture(":", capture(numbers))),
## and the rest
maybe(capture("/", anything)),
end
)
While these expressions are a bit longer than their corresponding regular expression, they are much more readable and maintainable.
install.packages("rex")
The vignettes have longer form usage examples.
Each rex()
function call can include a number of
functions and shortcuts. For a full list of the functions available
please see ?rex
and ?shortcuts
.
Rex functions are not exported because they are only useful within
rex()
calls, but they can be temporarily attached using
rex_mode()
which allows them to be auto-completed.
Using rex
in other packages will generate spurious NOTEs
from R CMD check
unless you include a call to
rex::register_shortcuts()
with your package name somewhere
in your package source. This function registers all of the rex shortcuts
as valid variables fixing the NOTEs.
rex
.rex
regular expressions
use.These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.