// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?m)IllegalArgumentException\n\s*at\s+(.+)(?:\n\s*at(?!\s*com\.test).*)*\n\s*at\s+((com\.test[^(\n]*).*)(?:\n\s*at.*)*\n\s*at\s+(?!\3)(com\.test.*)").unwrap();
let string = "IllegalArgumentException
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at com.test.package1.user1.client1.client1.Call.invoke(Call.java:90)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
at com.test.package1.user1.client1.client1.Call.invoke(SrvCall.java:84)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at java.security.AccessController.doPrivileged(Native Method)
at com.test.package2.user2.client2.client2.Call.invoke(Call.java:90)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/