Skip to content

est31/rust-onig

 
 

Repository files navigation

Rust Onig

Build Status Build status

Rust bindings for the Oniguruma regex library, a powerful and mature regular expression library with support for a wide range of character sets and language syntaxes. Oniguruma is written in C. This repository provides two crates: onig-sys which provides the raw Rust FFI bindings, and onig, which provides a safe Rust wrapper around them.

Documentation

Check out the module documentation to find out all the features that are available. To see some example usage of this crate take a look a the examples folder. The examples can be run from the command line with cargo run --example <examplename>.

Getting Started

Add the following to your Cargo.toml file:

[dependencies]
onig = "2.0"

Add the following extern to your crate root:

extern crate onig;

You can can compile simple regular expressions with Regex::new, check if the pattern matches an entire &str with Regex::is_match and find matches within a &str with Regex::find. The onig crate also supplies more powerful versions of these methods which expose the wide range of options Oniguruma provides.

use onig::*;

let regex = Regex::new("e(l+)").unwrap();
for (i, pos) in regex.captures("hello").unwrap().iter_pos().enumerate() {
    match pos {
         Some((beg, end)) =>
             println!("Group {} captured in position {}:{}", i, beg, end),
         None =>
             println!("Group {} is not captured", i)
    }
}

Static Linking

By default rust-onig will be dynamically lined to libonig. If your would rather that static linking is used then the environment variable RUSTONIG_STATIC_LIBONIG can be set. On *nix:

$ RUSTONIG_STATIC_LIBONING=1 cargo build

Or Windows:

> set RUSTONIG_STATIC_LIBONIG=1
> cargo build

Rust-Onig is Open Source

The contents of this repository are distributed under the MIT license. See LICENSE for more details.

About

Rust bindings for the Oniguruma regex library

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages