IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Rechercher un string entre des guillemets (Expression régulière)


Sujet :

avec Java

  1. #21
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Je voudrais utiliser les expressions régulières car j'ai plusieurs cas à tester pas que l'insert ...

    du coup mon idée était de chercher par exemple tout ce qu'il y a entre parenthèse après le mot insert ou après un quelconque mot.

    PS: Je n'ai pas forcément le:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	int fin = expr.length()-1;
    si par exemple je cherche ce qu'il y a à l'intérieur de test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		String expr= "test(\"1234\").insert(<ma balise> <secondeone>(coucou) </secondeone></mabalise>)";

  2. #22
    Membre chevronné
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Par défaut
    Bonsoir

    Pour les mots entre parenthèses celle regex peut faire l'affaire !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex= "\\([^\\)\\(]+\\)";
    et pour récupérer le mot c'est comme ludomacho a fait tout a l'heure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String find= scan.findInLine(regex);
    find = find.substring(1,find.length()-1);

  3. #23
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    Merci beaucoup pour votre aide.

    J'ai eu pleins de surprises en testant si vous relisez l'ensemble du post vous allez mieux comprendre mon problème.

    Merci pour votre aide.

  4. #24
    Membre chevronné
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Par défaut
    Oui désolé j'ai pas vu tout le post
    c'est ce que tu veux obtenir ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "<ma balise> <secondeone>(Je ne veux pas de ça) </secondeone></mabalise>"

  5. #25
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2010
    Messages : 62
    Par défaut
    oui svp tout en sachant que je pourrait avoir des expression comme celle ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    		String expr= "test(\"1234\").insert(<ma balise> <secondeone>(coucou) </secondeone></mabalise>)";
    du coup dans ce cas je veux qu'il me retourne que ce qu'il y entre les parenthèses qui sont juste après l'insert.

  6. #26
    Membre chevronné
    Avatar de Laine
    Femme Profil pro
    Doctorat informatique
    Inscrit en
    Mars 2013
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 35
    Localisation : Algérie

    Informations professionnelles :
    Activité : Doctorat informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 238
    Par défaut
    D'accord je planche dessus, je fais des tests
    .....
    ....
    quelque neurones brûlés plus tard............

    et avec ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String regex= "\\(<.*>\\)|\\([^\\)\\(]+\\)";

  7. #27
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Janvier 2010
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 312
    Par défaut
    Bonjour,

    AU risque d'être lourd j'insiste en proposant une solution qui fonctionne sans expression régulière :

    L'idée est de chercher le dernier ( et le premier ) qui suit le dernier (.

    On trouve alors un resultat. On remplace les () de ce résultat par autrechose dans une chaine intermediaire et on recommence.

    On obtient alors toute les souschaines entourées par des ().

    Mais on ne veut pas celles qui sont comprises dans d'autres () donc on fait un test pour les enlever.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    import java.util.*;
    import java.awt.*;
     
    public class Requetes{
     
    	public static void main(String[] args) {
     
    		ArrayList<String> array = new ArrayList<String>();
    		ArrayList<Point> indices = new ArrayList<Point>();
    		String expr = "test(\"1234\").insert(<ma balise> <secondeone>(coucou) </secondeone></mabalise>)";
    		String exprTemp = expr;
    		//debut de la méthode
    		int temp1 = exprTemp.lastIndexOf("(");
    		int temp2;
    		while(temp1>0) {
    			System.out.println(temp1);
    			temp2 = exprTemp.indexOf(")",temp1);
    			if (indices.size()>0) {
    				for (int j=0; j< indices.size();j++) {
    					if ( temp1 < indices.get(j).x  && temp2 > indices.get(j).y ) {
    						indices.remove(j);
    						array.remove(j);	
    					}
    				}
    			}
    			array.add(expr.substring(temp1+1,temp2));
    			indices.add(new Point(temp1,temp2));
    			exprTemp = exprTemp.substring(0,temp1) + " " + exprTemp.substring(temp1+1,temp2) + " " + exprTemp.substring(temp2+1,expr.length());
    			temp1 = exprTemp.lastIndexOf("(");
    		}
    		//fin de la methode
    		for (int i=0;i<array.size();i++) {
    			System.out.println(array.get(i));	
    		}
    	}
    }

  8. #28
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 095
    Par défaut
    Pour votre gouverne, pour déspécialiser le caractère "(" dans votre expression régulière, il faut le faire précéder de 2 caractères "\" !

    Ce qui pour votre expression citée plus haut donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String expr= "test\\(\"1234\"\\).insert(<ma balise> <secondeone>\\(coucou\\) </secondeone></mabalise>)";
    Pour les expressions régulières, c'est aussi le caractère "\" qui permet d'échapper l'interprétation des caractères spécialisés.
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. à propos des Regex (expressions régulières)
    Par stitox dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 25/02/2011, 21h26
  2. [RegEx] Recherche du bon pattern pour une expression régulière
    Par erehcab dans le forum Langage
    Réponses: 9
    Dernier message: 17/03/2010, 13h06
  3. String contenant des guillemets
    Par kavdo34 dans le forum Langage
    Réponses: 3
    Dernier message: 15/02/2010, 11h40
  4. Réponses: 1
    Dernier message: 14/02/2010, 22h10
  5. Génération d'un String à partir d'une expression régulière
    Par yang dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 06/03/2007, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo