// 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"(?:(?<=^)|(?<=\s))((?:2[0-5][0-5]|1[0-9][0-9]|[1-9][0-9]|[0-9])(?:\.(?:2[0-5][0-5]|1[0-9][0-9]|[1-9][0-9]|[0-9])){3})(?=\s|$)").unwrap();
let string = "IP Address:
93.114.205.169
0.0.0.0
0.0.0.0
10.10.10.10
99.99.99.99
199.199.199.199
255.255.255.255
256.256.256.256
02.02.02.02
111.222.13.255
1.2.3.4
1.2.3.4.5
11.22.33.44
11.22.33.44.55
255.0.1.254
255.0.1.254
In a text 255.0.1.254 there is an IP address
In a text 10.10.10.10 there is an IP address
In a text 93.114.205.169 there is an IP address
Domain:
example.com
https://sub5-7.example.com/
https://sub5-7.example.com
sub.sub2.example.com
www.example.com
https://sub.example.com
http://example.com
ftp://sub.mit-example222.com
In a text www.example.com there is an domain.
In a text https://sub5-7.example.com there is an domain.
In a text www.example.com there is an domain.
URL
93.114.205.169/path
example.com/path
sub.example.com/path
93.114.205.169/path
https://sub5-7.example.com/
http://example.com/
example.com/
sub.example.com/
www.--example.com/
www.examp--le.com/
www.example.co/
www.example.c/
example.com/path
sub.example.com/path
sub.example.com/path
sub.example.com/path
sub.example.com/path/path/path/p/a/q/1$%h
sub.example.com/path/path/path/p/a/q/1$%1fh
sub.example.com/path/path/%aa%1f%3dpath/p/a/q/1$%1fh
https://sub.example.com/path/path
http://sub.example.com/path/path
http://something.com/#$SLJFHsdq32908432098=!~abc
In a text example.com/path there is an URL path.
In a text www.example.com/path there is an URL path.
In a text www.blog.example.com/path there is an URL path.
In a text sub.example.com/paththere is an URL path.
In a text sub.example.com/path/path/path/p/a/q/1$%h there is an URL path.
In a text sub.example.com/path/path/path/p/a/q/ there is an URL path.
";
// 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/