verex 0.1.1

This crate provides a Rust implementation of VerbalExpressions in order to build regex strings without knowing the minutiae of regex syntax.
Documentation
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`](https://github.com/rust-lang-nursery/regex) crate to compile the created regex strings.

[![Build Status](https://travis-ci.org/VerbalExpressions/RustVerbalExpressions.svg?branch=master)](https://travis-ci.org/VerbalExpressions/RustVerbalExpressions)

# Usage

Add this to your Cargo.toml:
```toml
[dependencies]
verex = "0.1"
```
and this to your crate root:
```rust
extern crate verex;
```

# Examples

A simple example to show the usage:
```rust
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:
```rust
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.)?(?:[^ ]*)$)");
}
```