5 releases
new 0.2.2 | Nov 1, 2024 |
---|---|
0.2.1 | Oct 31, 2024 |
0.2.0 | Oct 13, 2024 |
0.1.1 | Oct 6, 2024 |
0.1.0 | Oct 6, 2024 |
#285 in Algorithms
504 downloads per month
305KB
7.5K
SLoC
RegexSolver
This repository contains the code of RegexSolver engine.
For more information, you can check the library's documentation.
If you want to use this library with other programming languages, we provide a wide range of wrappers:
For more information about how to use the wrappers, you can refer to our getting started guide.
Installation
Add the following line in your Cargo.toml
:
[dependencies]
regexsolver = "0.2"
Examples
Union
use regexsolver::Term;
let term1 = Term::from_regex("abc").unwrap();
let term2 = Term::from_regex("de").unwrap();
let term3 = Term::from_regex("fghi").unwrap();
let union = term1.union(&[term2, term3]).unwrap();
if let Term::RegularExpression(regex) = union {
println!("{}", regex.to_string()); // (abc|de|fghi)
}
Intersection
use regexsolver::Term;
let term1 = Term::from_regex("(abc|de){2}").unwrap();
let term2 = Term::from_regex("de.*").unwrap();
let term3 = Term::from_regex(".*abc").unwrap();
let intersection = term1.intersection(&[term2, term3]).unwrap();
if let Term::RegularExpression(regex) = intersection {
println!("{}", regex.to_string()); // deabc
}
Difference/Subtraction
use regexsolver::Term;
let term1 = Term::from_regex("(abc|de)").unwrap();
let term2 = Term::from_regex("de").unwrap();
let subtraction = term1.subtraction(&term2).unwrap();
if let Term::RegularExpression(regex) = subtraction {
println!("{}", regex.to_string()); // abc
}
Dependencies
~6.5–9MB
~169K SLoC