Pensé que esto sería una simple búsqueda en Google pero aparentemente no. ¿Qué es una expresión regular que puedo usar en C# para analizar una URL incluyendo cualquier cadena de consulta de un texto más grande? He pasado mucho tiempo y he encontrado muchos ejemplos de los que no incluyen la cadena de consulta. Y no puedo usar System.URI, porque eso supone que ya tienes la URL ... Necesito encontrarla en el texto que la rodea.regex para URL incluyendo cadena de consulta
Respuesta
Esto debe conseguir casi cualquier cosa (no dude en añadir protocolos adicionales):
@"(https?|ftp|file)\://[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*"
La verdadera dificultad es encontrar el final. Como es, este patrón se basa en encontrar un personaje inválido. Eso sería cualquier cosa que no sean letras, números, guiones o un período anterior al final del nombre de dominio, o cualquier cosa que no sean esos más barra diagonal (/), signo de interrogación (?), Ampersand (&), signo igual (=), punto y coma (;), signo más (+), signo de exclamación (!), apóstrofo/comilla simple ('), paréntesis de abrir/cerrar, asterisco (*), guión bajo (_), tilde (~) o signo de porcentaje (%) después del nombre de dominio.
Tenga en cuenta que esto permitiría a las direcciones URL no válidas como
http://../
Y sería recoger cosas después de un URL, como en esta cadena:
tal vez debería tratar http://www.google.com.
Donde "http://www.google.com."
(con el período de salida) coincidirían.
También se perdería URL que no comenzó con una especificación de protocolo (en concreto, los protocolos dentro del primer conjunto de paréntesis, por ejemplo, que se perdería el URL en esta cadena:.
Tal vez debe tratar de www.google.com.
es muy difícil conseguir todos los casos sin algunos límites mejor definidos.
No funciona ... vea la respuesta aquí: http://stackoverflow.com/questions/9125016/get-url-from-a-text – kape123
@ kape123: "No funciona" no es muy útil. Señalé exactamente cuáles eran sus deficiencias. Funciona como se describe. ¿Hay algún otro caso que esperas que funcione que no funcione? –
Salida clase constructor de cadena de consulta de este tipo -
Microsoft también tiene una UriBuilder que podría ayudarle -
http://msdn.microsoft.com/en-us/library/system.uribuilder.query.aspx
Se ven bien para construir cadenas de consulta, pero JoelFan quiere identificar URL, no construirlas. – thetaiko
RegexLib tiene un montón de cosas útiles ...
Utilice el ABNF al final del RFC3986 como punto de partida para hacerlo bien.
Esto los usa para la validación de URI en Python; no es lo que está buscando, pero debería darle una idea de la dirección en la que debe ingresar: http://gist.github.com/138549
Disculpe que aún no puedo agregar comentarios, pero me gustaría señalar que la respuesta de P Daddy requiere un pequeño ajuste:
@"(https?|ftp|file)\://[a-zA-Z0-9\.\-]+(/[a-zA-Z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*"
No puedo encontrar nada diferente, excepto que invirtió el orden de los caracteres en mayúscula y minúscula (no operativa), y al hacerlo, corrigió un error tipográfico que tenía donde tenía 'aZ' (minúscula) a 'a mayúscula' Z'). La próxima vez, sería más simple simplemente señalar el error tipográfico. Lo arreglaré. –
- 1. Incluyendo una cadena de consulta en una llamada django.core.urlresolvers reverse()
- 2. ¿Obtener la ruta/url de la acción actual incluyendo la cadena de consulta? (Rails)
- 3. Regex eliminar todo después de: (incluyendo :)
- 4. Convención de cadena de consulta de URL para clasificación múltiple
- 5. Cambiar sola consulta URL valor de cadena
- 6. Regex para cadena contiene?
- 7. PHP: cadena para regex
- 8. extraer cadena de consulta de una cadena de URL
- 9. RegEx para hacer coincidir cadena completa
- 10. expresión regular para comprobar si existe cadena exacta incluyendo #
- 11. Reescritura de URL heredada con parámetros de cadena de consulta
- 12. Url enrutamiento regex PHP
- 13. JavaScript Clean URL Regex
- 14. .htaccess de reescritura de URL Retire cadena de consulta Claves
- 15. matraz-caché memoize parámetros de cadena de consulta URL también
- 16. Consulta Regex en Hibernate
- 17. solicitud de URL vistaweb androide con la cadena de consulta
- 18. mod_rewrite: eliminar la cadena de consulta de la URL?
- 19. consulta de parámetros de una URL que inturn tiene cierta URL con parámetros de consulta
- 20. ¿Limpiar URL para consulta de búsqueda?
- 21. Cómo pasar% en una cadena de consulta URL?
- 22. Truncar cadena de consulta y devolver URL limpia C# ASP.net
- 23. HTTPS, ruta URL, y la cadena de consulta
- 24. PHP Regex para eliminar http: // de la cadena
- 25. jQuery cadena de consulta
- 26. cambio de una URL para consulta web de Excel
- 27. Cómo escapar de una cadena para usar en Boost Regex
- 28. Regex para encontrar una cadena sin terminar
- 29. regex para buscar una cadena entre corchetes []
- 30. ¿Cómo convierto una cadena de consulta PHP en una URL basada en barras?
¿Cuáles son las reglas? ¿Van a estar codificados correctamente o podrían haber espacios en la cadena? Si se van a codificar correctamente, bastará con cualquiera de los patrones que anteriormente debería haber funcionado si agrega simplemente agregar una búsqueda de caracteres que no sean de espacios en blanco hasta el final. – Guildencrantz