Précédent   Forum des professionnels en informatique > Java > Général Java > Langage
Langage Forum d'entraide sur le langage Java et autres langages pour la JVM : syntaxe, POO, conventions, API standard. Avant de poster -> FAQ Java
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 30/01/2012, 19h43   #1
Nouveau Membre du Club
 
Inscription : juillet 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 61
Points : 27
Points : 27
Par défaut Regex trouver tous les chemins intermédiaires

Bonjour,


J’ai une questions sur les regex java ...
En fait, je dois sortir tous les chemins qui sont compris entre :
siteLong : /internet/domain/site1/site2/site3/site4
Et siteCourt :/domain/ec.europa.eu/site1

Le résultat doit être :
/internet/ domain /site1/site2
/internet/ domain /site1/site2/site3
Eventuellent en incluant une ou les deux bornes si plus facile.

J’ai pour l’instant écrit le code suivant, qui ne fonctionne pas :
Code :
1
2
3
4
5
6
7
8
9
 
					String regularExpression = "([a-zA-Z]:)?(\\\\[.a-zA-Z0-9_-]+)+\\\\?";
 
					final Pattern pattern = Pattern.compile(siteCourt +regularExpression); //to be adapted 
					final Matcher matcher = pattern.matcher(siteLong );  //to be adapted
					while(matcher.find()) {  
						final String group = matcher.group(2);  
						System.out.println(group);
					}
Comment puis-je adapter mon expression régulière ?
Pedro4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h19   #2
Nouveau Membre du Club
 
Inscription : juillet 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 61
Points : 27
Points : 27
Par défaut regex ou substring

Je me demande s'il n'est pas plus facile d'utiliser un algorithme permettant d'extraire toutes les substrings d'un path?
C'est-à-dire tous les chemins entre /site1/site2 et /site1/site2/site3/site4/site5...
Pedro4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 11h23   #3
Modérateur
 
Inscription : août 2006
Messages : 2 848
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 2 848
Points : 2 950
Points : 2 950
Je n'ai pas tout compris, mais un split sur le caractère / ne te suffit pas ?
fr1man est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 12h17   #4
Nouveau Membre du Club
 
Inscription : juillet 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 61
Points : 27
Points : 27
Par défaut split...

Le split pourrait être une bonne idée, mais après il faut alors concaténer les différentes chaînes?
Pedro4 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/01/2012, 17h29   #5
Membre confirmé
 
Avatar de DarkSeiryu
 
Homme Mickaël
Développeur Web
Inscription : janvier 2009
Messages : 408
Détails du profil
Informations personnelles :
Nom : Homme Mickaël
Âge : 23
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : janvier 2009
Messages : 408
Points : 234
Points : 234
Envoyer un message via MSN à DarkSeiryu
Salut !

Citation:
Envoyé par Pedro4 Voir le message
Le split pourrait être une bonne idée, mais après il faut alors concaténer les différentes chaînes?
Je ne comprends pas trop non plus. Pourquoi récupérer les différentes parties d'une URL pour ensuite les concaténer ?

Mais sinon la réponse de fr1man est la bonne.
DarkSeiryu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 10h30   #6
Modérateur
 
Avatar de dinobogan
 
Homme Dinobogan Shelashyn
ingénieur étude et développement
Inscription : juin 2007
Messages : 3 273
Détails du profil
Informations personnelles :
Nom : Homme Dinobogan Shelashyn
Âge : 31
Localisation : France

Informations professionnelles :
Activité : ingénieur étude et développement
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2007
Messages : 3 273
Points : 4 881
Points : 4 881
Si j'ai bien compris le problème, il y a plus simple :
Code :
1
2
3
4
5
6
7
8
9
 
String url = "/internet/domain/site1/site2/site3/site4";
for( int i = 1 ; i < url.length() ; ++i )
{
	if( url.charAt( i ) == '/' )
	{
		System.out.println( url.substring( 0, i ) );
	}
}
Et voici le résultat :
Citation:
/internet
/internet/domain
/internet/domain/site1
/internet/domain/site1/site2
/internet/domain/site1/site2/site3
__________________
Que la force de la puissance soit avec le courage de ta sagesse.
dinobogan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 10h52   #7
Expert Confirmé Sénior
 
Inscription : septembre 2004
Messages : 5 092
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 092
Points : 7 020
Points : 7 020
Ma question va paraître stupide, mais :

Qu'est-ce qui est demandé, au juste ?
Quelqu'un peut donner un exemple qui ait vraiment un sens ?
thelvin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2012, 12h00   #8
Nouveau Membre du Club
 
Inscription : juillet 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 61
Points : 27
Points : 27
Par défaut Résolu!

Citation:
Envoyé par dinobogan Voir le message
Si j'ai bien compris le problème, il y a plus simple :
Code :
1
2
3
4
5
6
7
8
9
 
String url = "/internet/domain/site1/site2/site3/site4";
for( int i = 1 ; i < url.length() ; ++i )
{
	if( url.charAt( i ) == '/' )
	{
		System.out.println( url.substring( 0, i ) );
	}
}
Et voici le résultat :
Effectivement c'est ce que je cherchais! Je voulais passer par les regular expressions je ne sais pas trop pourquoi, et j'ai finalement implémenté quelque chose comme ça (avec quelques vérifications en plus spécifique à ma logique métier mais anecdotique ici).
Je ne comprends pas pourquoi j'ai voulu utilisé les expressions régulières...
Sûrement une idée dont je n'ai pas vu après qu'elle était mauvaise...
Et aussi parce que je pensais réussir grâce à cela à optimiser les performances.

Merci!
Pedro4 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 07h03.


 
 
 
 
Partenaires

Hébergement Web