Seguramente más de uno que ha tenido la oportunidad de revisar código ajeno donde se hacía uso de expresiones regulares, sufrió de algún modo para entender algunos patrones; esto sucede generalmente porque pocos suelen poner nombres a los grupos que definen y menos aún usan comentarios dentro de los patrones.

El siguiente ejemplo ilustra de manera básica un patrón confuso:

using System;
using System.Text.RegularExpressions;

class Program
{
	static void Main(string[] args)
	{
		string patern = @"(https?://)([a-z\d-]+\.)*([a-z\d-]+)((\.[a-zA-Z]+){1,2})(/.*$)?";

		RegexOptions options = RegexOptions.IgnoreCase;

		Match match = Regex.Match("http://google.com", pattern, options);

		foreach (Group group in match.Groups)
		{
			Console.WriteLine(group.Value);
		}            
	}
}

Ese mismo ejemplo, usando la opción RegexOptions.IgnorePatternWhitespace permite entender más fácilmente la expresión regular mostrada:

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main(string[] args)
    {
        string pattern = @"
               (?# Ejemplo de comentario: captura el protocolo http o https incluyendo ://)
               (?<protocol>https?://)
               (?<subDomain>[a-z\d-]+\.)*
               # Algún otro comentario relevante #
               (?<domain>[a-z\d-]+)
               (?<TLD>(\.[a-zA-Z]+){1,2})
               (?<requestUri>/.*$)?
           ";        
        RegexOptions options = RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase;

        Match match = Regex.Match("http://google.com", pattern, options);

        foreach (Group group in match.Groups)
        {
            Console.WriteLine(group.Value);
        }
    }
}

Como se puede apreciar, el segundo ejemplo da una idea más clara de lo que captura el patrón definido.

Si desarrollan en .NET y usan expresiones regulares, no hay excusas para hacer sufrir a los que revisan o dan mantenimiento al código que hicieron ;)