using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^\s*<VirtualHost\s+[^>]*>\s*ServerName\s+(?P<ServerName>\S+)\s*DocumentRoot\s+(?P<DocumentRoot>.+?)\s*</VirtualHost>";
string input = @"# 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>";
RegexOptions options = RegexOptions.Multiline;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
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 C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx