re2

Crates.iore2
lib.rsre2
version0.0.8
sourcesrc
created_at2023-11-30 08:28:37.398017
updated_at2024-01-01 17:24:49.258596
descriptionWrapper for the re2 C++ regex library.
homepage
repositoryhttps://github.com/cosmicexplorer/spack-rs
max_upload_size
id1053983
size108,826
Danny McClanahan (cosmicexplorer)

documentation

README

re2

A wrapper of the re2 C++ library to demonstrate a use case for spack-rs.

The below syntax guide is reproduced from the re2 codebase.

Regexp Syntax

This module uses the re2 library and hence supports its syntax for regular expressions, which is similar to Perl's with some of the more complicated things thrown away. In particular, backreferences and generalized assertions are not available, nor is \Z.

See Syntax1 for the syntax supported by RE2, and a comparison with PCRE and PERL regexps.

For those not familiar with Perl's regular expressions, here are some examples of the most commonly used extensions:

  • "hello (\\w+) world" -- \w matches a "word" character
  • "version (\\d+)" -- \d matches a digit
  • "hello\\s+world" -- \s matches any whitespace character
  • "\\b(\\w+)\\b" -- \b matches non-empty string at word boundary
  • "(?i)hello" -- (?i) turns on case-insensitive matching
  • "/\\*(.*?)\\*/" -- .*? matches . minimum number of times possible

The double backslashes are needed when writing string literals. However, they should NOT be used when writing raw string literals:

  • r"(hello (\w+) world)" -- \w matches a "word" character
  • r"(version (\d+))" -- \d matches a digit
  • r"(hello\s+world)" -- \s matches any whitespace character
  • r"(\b(\w+)\b)" -- \b matches non-empty string at word boundary
  • r"((?i)hello)" -- (?i) turns on case-insensitive matching
  • r"(/\*(.*?)\*/)" -- .*? matches . minimum number of times possible

When using UTF-8 encoding, case-insensitive matching will perform simple case folding, not full case folding.

License

BSD-3-Clause, in order to match re2's license.

Footnotes

  1. https://github.com/google/re2/wiki/Syntax

Commit count: 429

cargo fmt