2013-03-20 2 views
0

Je voudrais obtenir le nom de personne qui parle de certains fichiers chemins mp3s tels que les suivants:regex: toute chaîne entre deux barres obliques premier d'entre eux est préfixé avec une chaîne définie

/assets/audio/James_Lee/001.mp3 
/assets/audio/Marc_Smith/001.mp3 
/aasets/audio/blahblah/001.mp3 

Dans l'exemple précédent, nous Notez que chaque nom de locuteur est entouré de deux barres obliques où le premier d'entre eux est précédé du mot audio. J'ai besoin d'un modèle qui correspond à des noms comme l'exemple ci-dessus en utilisant javascript.

J'ai essayé à http://regexpal.com/:

audio/.*/ 

mais il correspond seulement *audio/The_name/* où je dois *The_name* seulement. L'autre chose que je ne sais pas comment pourrais-je utiliser ces modèles avec javascript replace().

Répondre

3

Cela obtenir votre nom: (?<=\/assets\/audio\/).*(?=\/)

Voici le regex utilisé: http://regexr.com?34747

Considérant Javascript, vous pourriez faire:

var string = "/assets/audio/James_Lee/001.mp3"; 
var name = string.replace(/^.*\/audio\/|\/[\d]+\..*$/g, ''); 
+0

@Kent - Comment passif agressif :-) Oui, je viens de réaliser que Javascript était utilisé. Travailler sur l'ajustement de la réponse. – Daedalus

+0

juste une blague :) mais joli look de toute façon .. – Kent

+0

@Daedalus pourriez-vous s'il vous plaît regarder son utilisation avec la méthode replace() de l'objet string javascript? – SaidbakR

1

Essayez ceci:

var str = "/assets/audio/James_Lee/001.mp3\n/assets/audio/Marc_Smith/001.mp3"; 

var pattern = /audio\/(.+?)\//g; 
var match; 
var matches = []; 
while ((match = pattern.exec(str)) !== null){ 
    matches.push(match[1]); 
} 

console.log(matches); 

// If you want a string with only the names, you can re-combine the matches 
str = matches.join('\n'); 
+0

I Je ne veux pas toutes les chaînes de chemins je dois juste vérifier l'un d'entre eux, plusieurs chemins dans l'exemple est juste une question d'exemple. – SaidbakR

+0

@ sємsєм Désolé, vous voulez dire que vous voulez une dernière chaîne avec juste les noms? Je ne suis pas sûr de suivre. – loganfsmyth

+0

En d'autres termes, je veux dire str = un seul chemin. – SaidbakR

0

qu'en pensez-vous?

str.replace(/.*audio\/([^\/]*)\/.*/,"$1") 
Questions connexes