Learn R Programming

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 bit 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.

See Also

  • 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.

Copy Link

Version

Install

install.packages('rex')

Monthly Downloads

149,032

Version

1.2.1

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Last Published

November 26th, 2021

Functions in rex (1.2.1)

%or%

Or
lookarounds

Lookarounds
capture

Create a capture group
character_class_escape

Character class escapes
character_class

Create character classes
group

Create a grouped expression
not

Do not match
as.regex

escape

Escape characters for a regex
counts

Counts
re_matches

Match function
wildcards

Wildcards
register_shortcuts

Register the Rex shortcuts
as.character.regex

Regular Expression
rex

Generate a regular expression.
rex_mode

Toggles rex mode.
re_substitutes

Substitute regular expressions in a string with another string.
shortcuts

Shortcuts
single_shortcuts

Single shortcuts