Es por el salto de linea, no se como seguir matcheando después de el.
En el comentario anterior te he indicado como hacerlo... con el flag
SingleLine.
El parametro SingleLine solo detiene el match hasta el primer \n eso no es lo que interesa
Hace todo lo opuesto, lee bien su funcionalidad.
.* con
SingleLine = Cero o más caracteres, incluyendo saltos de linea (\n).
Ten en cuenta que estás bajo
C#, y hay muchas cosas que son diferentes en el modo de empleo. Usar un evaluador de expresiones regulares ligado a las limitaciones y la sintaxis del motor RegEx de javascript, no es la clave de nada.
Si quieres evaluar expresiones para .Net, usa un servicio online para esa finalidad... aunque yo personalmente te sugiero la aplicación de escritorio
RegexBuddy, y para construir expresiones,
RegexMagic.
la respuesta que recibo del servidor la intento mostrar en Messagebox.Show() y no sale nada, sin embargo tiene contenido cuando depuro
Pues muestra el código y la url para intentar hallar el error...
Volviendo al tema, deberías preguntar desde el principio por lo que realmente quieres lograr, ¿quieres obtener el valor de los href?, ¿es eso?, ¿entonces por que intentas capturar toda la linea?.
Puedes hacerlo de la siguiente manera:
string html = File.ReadAllText("C:\\file.html");
Regex expr
= new Regex
("href=\"(?<url>.+)\"", RegexOptions
.Multiline);
Console.WriteLine(expr.IsMatch(html));
foreach (Match m in expr.Matches(html)) {
Console.WriteLine(m.Groups("url").Value);
}
o bien...:
string html = File.ReadAllText("C:\\file.html");
Regex expr
= new Regex
("div class=\"logo\".+(?:(\n){1})?.+href=\"(?<url>.+)\".+$",
RegexOptions.Multiline | RegexOptions.ExplicitCapture | RegexOptions.IgnoreCase);
Console.WriteLine(expr.IsMatch(html));
foreach (Match m in expr.Matches(html)) {
Console.WriteLine(m.Groups("url").Value);
}
PD: De todas te sugiero evitar la utilización de RegEx para intentar parsear estructuras Html, ya que no se inventó para ese fin. Mi consejo, utiliza HtmlAgilityPack, es mucho más sencillo y eficiente.
Saludos