// 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)^\s*<VirtualHost\s+[^>]*>\s*ServerName\s+(?P<ServerName>\S+)\s*DocumentRoot\s+(?P<DocumentRoot>.+?)\s*</VirtualHost>").unwrap();
let string = "# Virtual Hosts
#
# Required modules: mod_log_config
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn\\'t need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option \\'-S\\' to verify your virtual host
# configuration.
#
# Use name-based virtual hosting.
#
##NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ##ServerName or ##ServerAlias in any <VirtualHost> block.
#
##<VirtualHost *:80>
##ServerAdmin webmaster@dummy-host.example.com
##DocumentRoot \"D:/xampp/htdocs/dummy-host.example.com\"
##ServerName dummy-host.example.com
##ServerAlias www.dummy-host.example.com
##ErrorLog \"logs/dummy-host.example.com-error.log\"
##CustomLog \"logs/dummy-host.example.com-access.log\" common
##</VirtualHost>
##<VirtualHost *:80>
##ServerAdmin webmaster@dummy-host2.example.com
##DocumentRoot \"D:/xampp/htdocs/dummy-host2.example.com\"
##ServerName dummy-host2.example.com
##ErrorLog \"logs/dummy-host2.example.com-error.log\"
##CustomLog \"logs/dummy-host2.example.com-access.log\" common
##</VirtualHost>
##<VirtualHost *:8080>
##ServerName CI1
##DocumentRoot D:\\xampp\\htdocs\\codeigniter_1\\public
##</VirtualHost>
<VirtualHost *:8080>
ServerName CI2
DocumentRoot D:\\xampp\\htdocs\\codeigniter_2\\public
</VirtualHost>
<VirtualHost *:8080>
ServerName CI3
DocumentRoot D:\\xampp\\htdocs\\codeigniter_3\\public
</VirtualHost>
<VirtualHost *:8080>
ServerName CI3
DocumentRoot D:\\Embedded Spaces and spaces at end of line\\htdocs\\codeigniter_3\\public
</VirtualHost>";
// 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/