# rex v1.2.0

0

0th

Percentile

## Friendly Regular Expressions

A friendly interface for the construction of regular expressions.

# Rex

### Friendly Regular Expressions

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)

r <- "^(?:(((?:[^:])+)://))?((?:(?:(?!:/).)*)+)(?:(:([[:digit:]]+)))?(?:(/.*))?\$"


You can write

r <- rex(

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 big longer than their corresponding regular expression, they are much more readable and maintainable.

## Installation

install.packages("rex")


## Usage

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 Mode

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

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.

• Regularity - Ruby library that partially inspired rex.
• PCRE - Perl Compatible Regular Expressions, the engine that rex regular expressions use.
• Perl 5 Regular Expressions - Perl regular expression documentation, which are nearly 100% compatible with PCRE.

## Functions in rex

 Name Description counts Counts as.regex Coerce objects to a regex. not Do not match group Create a grouped expression %or% Or lookarounds Lookarounds escape Escape characters for a regex capture Create a capture group character_class Create character classes character_class_escape Character class escapes shortcuts Shortcuts wildcards Wildcards register_shortcuts Register the Rex shortcuts as.character.regex Regular Expression rex Generate a regular expression. rex_mode Toggles rex mode. re_matches Match function re_substitutes Substitute regular expressions in a string with another string. single_shortcuts Single shortcuts No Results!