// 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)^\b(0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])\b\h(\.|\b((?=.{1,255}$)(?:xn\-\-)?(?!-)(?!.*--)[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*\.?)\b)(?:\.)?(?!=)(\h(([a-z0-9-]{1,63})((\=\")[\x21\x23-\x27\x2A-\x3A\x3C-\x7E]{1,255}+(\"))?)?)*?$"#).unwrap();
let string = "230 example.com
56 subsubdomain.subdomain.example.com.thisisaverylongdomainnamewithseventycharacters
89 subsubdomain.subdomain.example.com.thisisaverylongdomainnamewithseventycharacters test
1 gOOglE.com alpn=\"h3,h2\"
250 exmpla.com test=\"test\"
250 exmpla.com 33=\"3.63\"
250 . 33=\"363\"
1 . alpn=\"h3,h2\"
1 example.com. alpn=\"h3,h2\"
2 . test=test
3 . test=\"\"
1 . alpn=\"h3,h2\" ipv4hint=\"192.0.2.1\" ipv6hint=\"2001:db8::1\"
1 . alpn=\"h3,h2\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\"
1 test.org alpn=\"h3,h2\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\"
1 test.org alpn=\"h3,h2\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\"
1 test.org alpnfeefefefefefwefwefwefwefwefwefwefwefwefwefwefwefhththegerg=\"h3,h2\"
1 test.org alpnfeefefefefefwefweefwefwefwefwefwefwefwefwefhththegerg=\"h3\\,h2\"
1 test.org test=\"jn7j64m764mi67i4i467nhin0iu4n6nizn4i0n6z34htj0nizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht8303ht834t03h480th3hunizn4i0n4t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hu3ht834t03h480th3hu93hu4nu9o83h\"
1 test.org test=\"jn7j64m764mi67i4i467nhin0iu4n6nizn4i0n6z34htj0nizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hunizn4i0n6z34htj03ht803ht834t03h480th3hunizn4i0n4t03h480th3hunizn4i0n6z34htj03ht834t03h480th3hu3ht834t03h480th3hu93hu4nu9hho83h\"
1 test.org a=\"h3,h2\" alpn=\"h3,h2\"
3 . test
3 . test test test
1 .
1 überall-ist.de
1 xn--berall-ist-8db.de
1 rxn--berall-ist-8db.de
65535 test.org
655357 test.org
65536 test.org
1 example.comalpn=\"h3,h2\" ipv4hi-nt=\"192.0.2.1\" ipv6hint=\"2001:db8::1\"
678 tes\"\"t
1 test.org =\"test\"
";
// 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/