Pregunta

En mi programa en C # Me escribió una función de búsqueda de Google, que funciona por ir a buscar la fuente de cada página y conseguir las direcciones URL a través de expresiones regulares.

Mi real expresión regular es:

(?:(?:(?:http)://)(?:w{3}\\.)?(?:[a-zA-Z0-9/;\\?&=:\\-_\\$\\+!\\*'\\(\\|\\\\~\\[\\]#%\\.])+)

Esto funciona bien en este momento, pero me da, por ejemplo, las direcciones URL como http://www.example.com/forums/arcade.php?efdf=332

Sólo quiero estar en este caso la URL sin el ?efdf=332 al final.

Entonces, ¿cómo debería cambiar la expresión regular?

¿Fue útil?

Solución

http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+

hace lo mismo que su expresión regular (He quitado una gran cantidad de costra innecesario), pero se detiene a juego un enlace antes de una ?.

En C #:

Regex regexObj = new Regex(@"http://(?:www\.)?[a-zA-Z0-9/;&=:_$+!*'()|~\[\]#%.\\-]+")

Dicho esto, no estoy seguro de que esto es una buena manera de URLs que coinciden (¿qué pasa con https, ftp, mailto etc.?)

Otros consejos

Se puede utilizar la clase Uri para acceder a diversas partes de la dirección URL y, o bien eliminar la cadena de consulta desde el final, o concatenar las partes que desea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top