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
User | Most Recent Commit | # Commits |
---|
Other Committers
User | Most Recent Commit | # Commits |
---|
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.
Versions are numbered according to semver.
Add this to your Cargo.toml:
endencies]
x = "0.2"
and this to your crate root:
rn crate verex;
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\.)?(?:[^ ]*)$)");