quindi, ho una specie di URL interno: ad esempio "/img/pic/Image1.jpg" o "/pic/Image1.jpg" o semplicemente "Image1.jpg", e ho bisogno per abbinare questo "Image1.jpg" in altre parole voglio abbinare l'ultima sequenza di caratteri dopo/o se non ci sono/non solo sequenze di caratteri. Grazie in anticipo!Corrispondenza ultima parola dopo/
risposta
.*/(.*)
non funziona se non ci sono/s.
([^/]*)$
dovrebbe funzionare se ci sono o meno.
Ma '[\ s \ S] */(. *)'. – Gumbo
.*/([^/]*)
Il gruppo di acquisizione corrisponde all'ultima sequenza dopo /.
Non corrisponde a 'Image1.jpg' –
La seguente espressione farebbe il trucco:.
/([\w\d._-]*)$
O ancora più semplice (ma credo che questo è stato anche pubblicato qui di seguito prima di me)
([^/]+)$
Qualcosa di simile */(*. $ (i dettagli dipendono dal fatto che stiamo parlando di Perl, o qualche altro dialetto di espressioni regolari)
Primo. * corrisponde a tutto (comprese le barre). Poi c'è una barra, poi c'è. * Che corrisponde a tutto, da quella barra alla fine (che è $).
Il * funziona avidamente da sinistra a destra, il che significa che quando si hanno più barre, il primo * corrisponderà a tutti tranne l'ultimo.
L'espressione regolare * richiede * barra, quindi' Image1.jpg' non corrisponde a –
In Ruby Si potrebbe scrivere
([^\/]*)$
Le espressioni regolari in Ruby sono abbastanza universale e si può provare a vivere qui: http://rubular.com/ A proposito: forse c'è altra soluzione che non comporta espressioni regolari? E.g File.basenam(path)
(Ruby di nuovo)
Modifica: profjim lo ha pubblicato in precedenza.
Ho notato che hai detto nei tuoi commenti che stai usando javascript. Non hai davvero bisogno di una regex per questo e penso sempre che sia bello avere un'alternativa all'utilizzo di espressioni regolari.
var str = "/pic/Image1.jpg";
str.split("/").pop();
// example:
alert("/pic/Image1.jpg".split("/").pop()); // alerts "Image1.jpg"
alert("Image2.jpg".split("/").pop()); // alerts "Image2.jpg"
In realtà non è necessario regexp per questo.
s="this/is/a/test"
s.substr(s.lastIndexOf("/")+1)
=> test
e funziona anche bene per le stringhe senza alcuna /
perché allora lastIndexOf restituisce -1.
s="hest"
s.substr(s.lastIndexOf("/")+1)
=> hest
Una semplice espressione regolare che ho provato:
\w+(.)\w+$
Ecco un buon sito è possibile verificare su: http://rubular.com/
- 1. stringstream duplica ultima parola
- 2. Regular Expression corrispondenza nulla dopo una parola
- 3. corrispondenza obiettivo parola python
- 4. corrispondenza parola intera in javascript
- 5. Dividi colonna per ultima parola nella frase
- 6. ultima parola visualizzata in una vista testuale
- 7. rimuovere ultima parola in etichetta divisa da \
- 8. WordPress Orderby Ultima parola nel titolo
- 9. Snowball Stemmer deriva solo ultima parola
- 10. Corrispondenza a parola intera con regex.h
- 11. Corrispondenza parola intera solo nella query Django
- 12. Corrispondenza parola corretta in un tag span
- 13. Rimuovere ultima parola in una stringa in Objective-C
- 14. Php capitalizza parola dopo parentesi
- 15. regex: parola di corrispondenza che termina con "Id"
- 16. Corrispondenza testo fuzzy C#
- 17. Regex Ultima ricorrenza?
- 18. Come acquisire numero dopo parola in python
- 19. Rilevare la parola dopo una regex
- 20. Stringa corrispondenza esatta
- 21. jQuery animate + = e ultima versione
- 22. jQuery ultima $ .Browser
- 23. UITableView Rilevamento ultima cella
- 24. Progetti C++ di ultima generazione
- 25. XPath: corrispondenza parola intera (utilizzando la funzione di corrispondenza con flag senza distinzione tra maiuscole e minuscole)
- 26. Corrispondenza di un certo carattere dopo un Lookbehind positivo
- 27. Perdita di polimorfismo dopo la corrispondenza del modello
- 28. Roslyn - come aggiungere istruzioni dopo la corrispondenza InvocationExpressionSyntax
- 29. "SyntaxError: arg non-parola chiave dopo arg parola chiave" Errore in Python quando si usa requests.post()
- 30. Sostituire ultima parte della stringa
espressione regolare è universale) ma è per javascript regex –
espressioni regolari non sono universale, ci sono diversi gusti con diverse capacità. Ma questa espressione regolare di Perl farà il tuo compito: '^ (?:. * /) * (. *) $' –
non hai bisogno di un'espressione regolare per questo.usa la tua lingua preferita, dividi su "/" e poi ottieni l'ultimo elemento. Molto più semplice della regex di crafting. – ghostdog74