verex

Crates.ioverex
lib.rsverex
version0.2.2
sourcesrc
created_at2016-01-18 21:37:54.030022
updated_at2016-02-08 11:33:05.844788
descriptionThis crate provides a Rust implementation of VerbalExpressions in order to build regex strings without knowing the minutiae of regex syntax.
homepage
repositoryhttps://github.com/VerbalExpressions/RustVerbalExpressions
max_upload_size
id3921
size40,117
(apopiak)

documentation

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

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:

[dependencies]
verex = "0.2"

and this to your crate root:

extern crate verex;

Examples

A simple example to show the usage:

extern crate verex;
use verex::Verex;
use verex::find;

fn main() {
    // 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:

extern crate verex;
use verex::start_of_line;

fn main() {
    // 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\.)?(?:[^ ]*)$)");
}
Commit count: 46

cargo fmt