use multimatch::Scanner;
fn main() {
let patterns = multimatch::PatternSet::builder()
.add_literal("password", 0)
.add_literal("secret", 1)
.add_literal("api_key", 2)
.add_regex(r"ghp_[A-Za-z0-9]{36}", 3)
.build()
.expect("pattern compilation failed");
println!("Compiled {} patterns", patterns.pattern_count());
let input = b"my password is abc123 and secret api_key = ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
let matches = patterns.scan(input);
println!("Found {} matches:", matches.len());
for m in &matches {
let text = std::str::from_utf8(&input[m.start..m.end]).unwrap_or("<binary>");
println!(" pattern {} matched '{}' at {}..{}", m.pattern_id, text, m.start, m.end);
}
println!("Contains any: {}", patterns.is_match(input));
}