Regex pour faire correspondre le nom de fichier à la fin de l'URL

ayant ce texte:

http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg

Et d'autres textes comme celui-ci où le dernier 1 peut être n'importe quel autre numéro et le dernier 44 peut être n'importe quel autre nombre aussi bien, j'ai besoin d'un regex qui va correspondre /1t44.jpg. Tout ce que j'ai essayé jusqu'à présent (/.+?\.([^\.]+)$) matches de la première barre oblique (//img.oo.com.au/prod/CRWWBGFWG/1t44.jpg).

j'utilise javascript donc tout ce qui fonctionne sur RegexPal devrait faire.

Merci d'avance.

24
demandé sur jfriend00 2011-11-08 05:59:19
la source

6 ответов

si vous voulez faire correspondre un nom de fichier avec une extension de fichier très spécifique, vous pouvez utiliser quelque chose comme ceci:

/\/\dt\d\d\.jpg$/

correspond à:

a slash
followed by a digit
followed by the letter 't'
followed by two digits
followed by '.jpg' at the end of the string

Ou, si vraiment vous voulez juste le nom de fichier (ce qui est après le dernier slash avec toute l'extension de fichier), vous pouvez utiliser ceci:

/\/[^\/]+$/

correspond à:

a slash
followed by one or more non-slash characters
at the end of the string

dans votre chaîne d'échantillons de http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg, ces deux correspondra à /1t44.jpg. La première est évidemment beaucoup plus restrictif puisqu'il nécessite un format de nom de fichier. La seconde correspond à n'importe quel nom de fichier.


d'Autres choix. Dans le nœud.js développement, vous pouvez utiliser le path module et utiliser path.parse() pour casser un chemin vers le haut dans tous ses divers composants.

Et, il y a diverses bibliothèques écrites pour le navigateur qui va briser un chemin dans ses composants.

27
répondu jfriend00 2016-07-23 21:29:08
la source

voici un Regex simple qui va correspondre à tout après le dernier /:

/[^/]*$
45
répondu Scott Rippey 2011-11-08 06:12:08
la source

comme le dit Johnsyweb, un express régulier n'est pas vraiment nécessaire ici. AFAIK le moyen le plus rapide de faire ceci est avec lastIndexOf et substr.

str.substr(str.lastIndexOf('/'));
9
répondu Hemlock 2011-11-08 06:41:37
la source

bien sûr, vous n'avez pas à utiliser une expression régulière split chaîne et pop la dernière partie:

var str="http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";
var parts = str.split("/");
document.write(parts.pop() + "<br />");
3
répondu Johnsyweb 2011-11-08 06:20:17
la source

ceci est pour java sur une machine linux. Il s'empare de la dernière partie d'un chemin de fichier, de sorte qu'il peut être utilisé pour faire un fichier de verrouillage.

// String to be scanned to find the pattern.
String pattern = ".*?([^/.]+)*$";

// Create a Pattern object
Pattern r = Pattern.compile(pattern);

// Now create matcher object.
Matcher match = r.matcher("/usr/local/java/bin/keystore");

/**
* Now you have two matches
* #0    /usr/local/java/bin/keystore
* #1    keystore
*/

String fileLock = "";

if (match.find()) {
    fileLock = match.group(1) + ".lock";
}

un peu différent de la question originale, je sais. Mais j'espère que cela aidera les autres qui ont été coincés avec le même problème que j'avais.

partagez et profitez.

0
répondu mycowan 2015-03-17 05:47:44
la source

Basé sur la réponse de Scott, essayez ce qui suit: (JavaScript)

var url = "http://img.oo.com.au/prod/CRWWBGFWG/1t44.jpg";

var path           = url.replace(/(.*)([\\/][^\\/]*$)/, "" );

var lastElement    = url.replace(/(.*)([\\/][^\\/]*$)/, "" );

cela peut aussi être comparé pour le chemin de fichier Windows/Nix, pour extraire le nom de fichier ou le chemin de fichier:

c:\Program Files\test.js => c:\Program Files

c:\Program Files\test.js => \test.js
0
répondu Liam Ray 2016-03-01 12:45:37
la source

Autres questions sur