use regex::Regex;
use std::collections::HashSet;
fn contains_forbidden(text: &str, forbidden: &[&str]) -> bool {
let word_re = Regex::new(r"[a-z0-9]+").unwrap();
// Extract words
let words: HashSet<String> = word_re
.find_iter(&text.to_lowercase())
.map(|m| m.as_str().to_string())
.collect();
// Build forbidden set
let forbidden_set: HashSet<&str> = forbidden.iter().copied().collect();
// Check intersection
words.iter().any(|w| forbidden_set.contains(w.as_str()))
}
fn main() {
let text = "This text contains a badword inside";
let forbidden = ["badword", "evil", "kill", "nasty", "terrible"];
println!("{}", contains_forbidden(text, &forbidden));
}
/*
run:
true
*/