VerbalExpressions/RustVerbalExpressions

Name: RustVerbalExpressions

Owner: VerbalExpressions

Description: Rust Port of VerbalExpressions

Created: 2015-12-31 07:36:39.0

Updated: 2018-01-04 11:28:22.0

Pushed: 2016-02-08 11:33:12.0

Homepage: https://verbalexpressions.github.io/RustVerbalExpressions/verex/

Size: 3095

Language: Rust

GitHub Committers

UserMost Recent Commit# Commits

Other Committers

UserEmailMost Recent Commit# Commits

README

RustVerbalExpressions

This crate provides a Rust implementation of VerbalExpressions in order to build regex strings without knowing the minutiae of regex syntax. It uses the regex crate to compile the created regex strings.

Build Status

Versions are numbered according to semver.

Usage

Add this to your Cargo.toml:

endencies]
x = "0.2"

and this to your crate root:

rn crate verex;

Examples

A simple example to show the usage:

rn crate verex;
verex::Verex;
verex::find;

ain() {
// You can either use a mutable Verex to define different regexes
let mut verex = Verex::new();
let regex1 = verex.find("a")
                  .compile()
                  .unwrap();
let regex2 = verex.or_find("b")
                  .compile()
                  .unwrap();
// Or just use it for building one (you can use the functions directly as constructors)
let regex3 = find("a") // or: Verex::new().find("a")
             .or_find("b")
             .compile()
             .unwrap();

// Test whether the regexes match correctly
assert!(!regex1.is_match("b"));
assert!(regex2.is_match("b"));
assert!(regex3.is_match("b"));

Here's a URL testing example shamelessly stolen from the python Verex readme:

rn crate verex;
verex::start_of_line;

ain() {
// Create an example of how to test for correctly formed URLs
let verex = start_of_line()
            .find("http")
            .maybe("s")
            .find("://")
            .maybe("www.")
            .anything_but(" ")
            .end_of_line();
let regex = verex.compile().unwrap();
// Create an example URL
let test_url = r"https://www.google.com";
// Test if the URL is valid
assert!(regex.is_match(test_url));
// Test the generated regex string
assert_eq!(verex.source(), r"(?:^(?:http)(?:s)?(?:://)(?:www\.)?(?:[^ ]*)$)");


This work is supported by the National Institutes of Health's National Center for Advancing Translational Sciences, Grant Number U24TR002306. This work is solely the responsibility of the creators and does not necessarily represent the official views of the National Institutes of Health.