Ho pensato che sarebbe stata una semplice ricerca su Google ma apparentemente no. Che cosa è una regex che posso utilizzare in C# per analizzare un URL includendo qualsiasi stringa di query da un testo più grande? Ho trascorso molto tempo e ho trovato molti esempi di quelli che non includono la stringa di query. E non posso usare System.URI, perché questo presuppone che tu abbia già l'URL ... Ho bisogno di trovarlo nel testo circostante.regex per l'URL, inclusa la stringa di query
risposta
Questo dovrebbe ottenere qualsiasi cosa (sentitevi liberi di aggiungere protocolli aggiuntivi):
@"(https?|ftp|file)\://[A-Za-z0-9\.\-]+(/[A-Za-z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*"
La vera difficoltà è trovare alla fine. Così com'è, questo modello si basa sulla ricerca di un carattere non valido. Sarebbe qualcosa di diverso da lettere, numeri, trattino o punto prima della fine del nome di dominio, o qualcosa di diverso da quelli più barra (/), punto interrogativo (?), E commerciale (&), segno di uguale (=), punto e virgola (;), segno più (+), punto esclamativo (!), apostrofo/virgoletta singola ('), parentesi aperta/chiusa, asterisco (*), trattino basso (_), tilde (~) o segno di percentuale (%) dopo il nome del dominio.
Si noti che questo permetterebbe URL non validi come
http://../
E sarebbe raccogliere roba dopo un URL, come ad esempio in questa stringa:
Forse si dovrebbe cercare http://www.google.com.
Dove "http://www.google.com."
(con il periodo di trascinamento) corrispondeva.
Sarebbe anche perdere gli URL che non è iniziata con una specifica di protocollo (in particolare, i protocolli entro il primo gruppo di parentesi, per esempio, sarebbe perdere l'URL in questa stringa:.
Forse dovrebbero provare www.google.com.
E 'molto difficile ottenere ogni caso senza alcuni confini più definiti.
Non funziona ... vedi la risposta qui: http://stackoverflow.com/questions/9125016/get-url-from-a-text – kape123
@ kape123: "Non funziona" non è molto utile. Ho fatto notare esattamente quali fossero i suoi difetti. Funziona come descritto. C'è qualche altro caso che ti aspetti di lavorare che non sia? –
Partenza classe QueryString costruttore di questo ragazzo -
Microsoft ha anche un UriBuilder che potrebbe aiutare -
http://msdn.microsoft.com/en-us/library/system.uribuilder.query.aspx
Questi sembrano perfetti per creare stringhe di query, ma JoelFan vuole identificare gli URL, non costruirli. – thetaiko
RegexLib ha un sacco di cose utili ...
Utilizzare l'ABNF alla fine di RFC3986 come punto di partenza per farlo bene.
Questo li utilizza per la convalida URI in Python; non è quello che stai cercando, ma dovrebbe dare un'idea della direzione in cui dovresti andare: http://gist.github.com/138549
Mi dispiace, ma non sono ancora in grado di aggiungere commenti, ma vorrei sottolineare che la risposta di P Daddy richiede un piccolo ritocco:
@"(https?|ftp|file)\://[a-zA-Z0-9\.\-]+(/[a-zA-Z0-9\?\&\=;\+!'\(\)\*\-\._~%]*)*"
Non riesco a trovare nulla di diverso, tranne che hai invertito l'ordine dei caratteri maiuscoli e minuscoli (un no-op), e così facendo, corretto un refuso che avevo dove avevo "aZ" (minuscolo) un 'al maiuscolo' Z'). La prossima volta sarebbe più semplice indicare semplicemente l'errore di battitura. Lo aggiusterò. –
- 1. Regex per abbinare URL specifico con stringa di query
- 2. Clausola Where non inclusa nella query SQL
- 3. Regex per abbinare la stringa Java
- 4. Regex per abbinare la prima occorrenza di una stringa
- 5. Regex per sostituire la stringa esatta di corrispondenza
- 6. Regex Query Builder
- 7. Regex per controllare la data
- 8. Grep regex NON contenente la stringa
- 9. Regex trova la parola nella stringa
- 10. Regex per la validazione alfabetici e numeri nella stringa localizzata
- 11. Regex per verificare la stringa alfanumerica nel rubino
- 12. regex per trovare la stringa tra parentesi quadre []
- 13. Deserializzare la stringa di query sull'oggetto JSON
- 14. La stringa di SQLite contiene un'altra stringa di query
- 15. Regex per abbinare una stringa JSON
- 16. espressione regex per rimuovere eed dalla stringa
- 17. semplice regex sostituire per mantenere stringa originale
- 18. Regex - corrisponde a qualsiasi stringa eccetto la stringa specifica
- 19. JavaScript - stringa backreference regex
- 20. JavaScript spaccatura stringa regex
- 21. C# RegEx estrazione stringa
- 22. Simboli in stringa di query per elasticsearch
- 23. MySQL regex query case sensitive
- 24. Posso usare regex in una query DynamoDB?
- 25. stringa regex sostituire
- 26. PHP Regex per rimuovere http: // dalla stringa
- 27. Restrizioni stringa preservazione Regex
- 28. Come dividere questa stringa per regex?
- 29. PHP: stringa da regex
- 30. Corrispondenza stringa Regex?
Quali sono le regole? Saranno correttamente codificati o potrebbero esserci degli spazi nella stringa? Se saranno codificati correttamente, quasi tutti i pattern che hai precedentemente dovrebbero funzionare se aggiungi semplicemente aggiungi una ricerca per caratteri non spazi bianchi alla fine di esso. – Guildencrantz