Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/08/2011, 00h55   #1
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
Par défaut Une regex Python en Javascript

bonjour

j'ai un regex python

Code :
1
2
3
4
5
6
import re
pretty_re = re.compile("([^/(]+)(?:\((.+)\))?$")
 
def pretty(s):
  g = pretty_re.search(s).groups()
  return g[1] or g[0]
le but est de transformer les
Code :
1
2
3
/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o  ->  crt1.o
contiki-minimal-net.a(contiki-main.o)   ->  contiki-main.o
/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)  ->   elf-init.oS
en gros récuperer le dernier element d'un path et prendre la derniere partie entre parenthese

il y a surement plus simple que l'enorme regex python ci-dessus, en faisant d'abord un split('/') , en tout cas merci de l'aide
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 09h34   #2
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 021
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 021
Points : 45 117
Points : 45 117
Code :
1
2
3
4
5
6
7
8
9
10
 
var pretty_re =/\(([^)]+)\)[^)]+$/
 
 
var chaine1="/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o  ->  crt1.o"
var chaine2="contiki-minimal-net.a(contiki-main.o)   ->  contiki-main.o"
var chaine3="/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)  ->   elf-init.oS"
 
  g = pretty_re.exec(chaine2)
  alert(g[1])
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 10h35   #3
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
Citation:
Envoyé par SpaceFrog Voir le message
Code :
1
2
3
4
5
6
7
8
9
 
var pretty_re =/\(([^)]+)\)[^)]+$/
 
var chaine1="/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o"
var chaine2="contiki-minimal-net.a(contiki-main.o)"
var chaine3="/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)"
 
  g = pretty_re.exec(chaine2)
  alert(g[1])
Code :
1
2
3
4
5
6
7
8
9
10
TypeError
arguments: Array[2]
0: 1
1: null
length: 2
__proto__: Array[0]
message: "—"
stack: "—"
type: "non_object_property_load"
__proto__: Error
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 12h36   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 021
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 021
Points : 45 117
Points : 45 117
??
tu es sur que tu es en javascript ... ???

il m'alert bien le résultat attendu ...
en général je teste avant de donner du code ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 12h41   #5
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
j'ai essayé avec la cosole de chrome, là je viens de réessayer sous firefox, et c'est toujours:
TypeError: g is null
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h05   #6
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 021
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 021
Points : 45 117
Points : 45 117
on peut voir ton code ...
Vu que le mien fonctionne, cela ne peut provenir que d'une erreur dans ton code
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h10   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 807
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 807
Points : 35 797
Points : 35 797
Spaffy, d'après moi, ça vient de la chaine à tester.
Tu as conservé la forme originale
Code :
1
2
3
var chaine1="/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o  ->  crt1.o"
var chaine2="contiki-minimal-net.a(contiki-main.o)   ->  contiki-main.o"
var chaine3="/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)  ->   elf-init.oS"
mais je pense qu'il fallait plutôt lire
Code :
1
2
3
var chaine1="/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o"  //->  crt1.o
var chaine2="contiki-minimal-net.a(contiki-main.o)"   //->  contiki-main.o
var chaine3="/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)"  //->   elf-init.oS
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 13h13   #8
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
c'est les chaines ecrites comme ci dessous, ton regex n'est pas bon

mais sinon ils marchent pour les chaines que tu as ecrites

est-ce qu'il y a un regex simple pour recuperer juste la partie entre parenthèse
sachant qu'avant je peux faire un split('/') et prendre le dernier élément

Code :
1
2
3
4
5
6
7
8
var pretty_re =/\(([^)]+)\)[^)]+$/
 
var chaine1="/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5.2/../../../crt1.o"
var chaine2="contiki-minimal-net.a(contiki-main.o)"
var chaine3="/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)"
 
  g = pretty_re.exec(chaine2)
  alert(g[1])
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 17h12   #9
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 944
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 944
Points : 4 776
Points : 4 776
Code :
1
2
3
4
var chaine2="contiki-minimal-net.a(contiki-main.o)"
var sReg = /\((.*?)\)/;
g = sReg.exec(chaine2)
alert(g[1])
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 17h15   #10
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 252
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 252
Points : 16
Points : 16
bon en l'absence de réponse j'ai fait un truc pas genial
Code :
1
2
3
4
5
6
7
var reg=new RegExp("[\(\)]", "g")
function pretty(s){
    t=s.split('/');
    return t[t.length-1].split(reg)[1]
}
var chaine3="/usr/lib/i386-linux-gnu/libc_nonshared.a(elf-init.oS)"
alert(pretty(chaine3))
edit: merci nosmoking!
____22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h47.


 
 
 
 
Partenaires

Hébergement Web