// 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)^(?:(?:(jdbc)\:{1})?(?:(\w+):/{2})?(?:([^@\/?!\"':#\s]+(?::\w+)?)@)?)?(?:([^@\/?!\"':#\s]+(?::\d+)?)(?=(?:$)|(?:/)))?(?:/([^@?!\"':#\s]*)(?=(?:$)|(?:\?)))?(?:[?]([^#?!\s]+))?\S*$"#).unwrap();
let string = "postgresql://
postgresql://localhost
postgresql://localhost:5432
postgresql://localhost/mydb
postgresql://user@localhost
postgresql://user:secret@localhost
postgresql://user:secret@localhost:1533
postgresql://user:secret@localhost:1533/
postgresql://user:secret@localhost:1533/db?
postgresql://user::se:::cret@localhost::port
postgresql://user::secret@local::host::po::::rt/dd::b:::b
postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
postgresql://localhost/mydb?user=other&password=secret
jdbc:postgresql://localhost
jdbc:postgresql://other@localhost/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://other@localhost:5432/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://other:pass@localhost:5432/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://other:pass@localhost:5432/other/db?connect_timeout=10&application_name=myapp
jdbc:postgresql://other:pass@localhost:5432/other/db??connect_timeout=10&application_name=myapp
jdbc:postgresql://other::pass@localhost::5432/oth:erdb?connect_timeout=10&application_name=myapp
\"\"''\":::abc;
postgresql://127.0.0.1::5432
127.0.0.1::5432
localhost
user@localhost
user@localhost:1533
user@localhost:1533/db
user@localhost:1533/db?
user:secret@localhost
user:secret@localhost/db
user:secret@localhost/db?
user:secret@local:host/otherdb
user:secret@local:1533/othe1//db
user:secret@localhost/otherdb?connect_timeout=10&application_name=myapp
user:secret@localhost/other/db?connect_timeout=10&application_name=myapp
user:secret@localhost/other/db??connect_timeout=10&application_name=myapp
us\"\"er:se::cret@loca''lhost
user:secret@local:1533/otherdb
jdbc:postgresql://user:secret@localhost:1533/otherdb
jdbc:postgresql://user:secret@@localhost:1533/otherdb
jdbc:postgresql://user:secret@localhost:1533/otherdb?
jdbc:postgresql://:secret@localhost:1533/otherdb?
jdbc:postgresql://user:secret@:1533/otherdb?
jdbc:postgresql://user:secret@localhost:1533/@otherdb?
jdbc:postgresql://user:secret@localhost/otherdb?connect_timeout=10&application_name=myapp
jdbc:postgresql://user:secret@localhost:1533/otherdb?connect_timeout=10&application_name=myapp
jd''bc:post\"\"gresql://us..er:sec,,ret@localh++ost/ot+-herdb?connect_timeout=10&application_name=myapp";
let substitution = "$1 \\n$2 \\n$3 \\n$4 \\n$5 \\n---\\n";
// result will be a String with the substituted value
let result = regex.replace_all(string, substitution);
println!("{}", result);
}
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/