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

Java Discussion :

Regex matches ne fonctionne pas


Sujet :

Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 3
    Points : 5
    Points
    5
    Par défaut Regex matches ne fonctionne pas
    Bonjour, voila le problème j'ai un fichier texte avec plusieurs lignes dedans et j'aimerais afficher uniquement les lignes que je veux et vu que les lignes sont différentes d'un fichier texte à un autre je voudrais utiliser une regex comme ça j'aurais pas à faire plusieurs conditions, le souci c'est que je n'arrive pas à faire fonctionner le regex, effectivement j'ai fais
    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
     
            String regex = "[a-zA-Z]";
    	while ((ligne = br.readLine()) != null) {
     
    			// Suite de condition permettant d'extraire des lignes grace a leurs debut
    				if(ligne.startsWith("Photographer : ")) {
    					System.out.println(ligne);
    					photographer = ligne.substring(15);
     
    				}else if (ligne.startsWith("Photo URL")) {
    					System.out.println("Photo URL : " + ligne.substring(52,61));
    					photo_url = ligne.substring(52,61);
     
    				}else if(ligne.startsWith("Taken Date")) {
    					System.out.println(ligne);
    					Taken_Date = ligne.substring(12);
     
    				}else if(ligne.matches(regex)) {
    					System.out.println("Titre : " + ligne);
    					titre = ligne.substring(0);
     
    				}else if (ligne.startsWith("Ap")) {
    					System.out.println("Description : " + ligne);
    					description = ligne.substring(0);
     
    				}else if(ligne.startsWith("N",1)) {
    					System.out.println("Tags : " + ligne.substring(0));
    					tags = ligne.substring(0);
    			}
    		}
    				br.close();
    		}catch (Exception e) {
    			System.out.println(e.toString());
    			}
    Mais la ligne --> ligne.matches(""^[a-zA-Z-]") ne fonctionne absolument pas et je ne sais pas pourquoi
    Si des gens pourrait m'eclairer ca serais super sympa
    Une bonne journée à vous

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Hello,

    Citation Envoyé par Misaka62 Voir le message
    Mais la ligne --> ligne.matches(""^[a-zA-Z-]") ne fonctionne absolument pas et je ne sais pas pourquoi
    je ne la vois pas, la ligne en question...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    Ta regex est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     String regex = "[a-zA-Z]";
    et non
    [a-zA-Z] remonte tous les caractères alphabétiques, où qu'ils se trouvent dans la chaîne testée :
    1000dddd -> (d,d,d,d)

    ^[a-zA-Z] remonte le premier caractère alphabétique s'il est le premier caractère de la chaîne testée :
    1000dddd -> rien
    dddd -> d

    Tu peux tester en ligne ici par exemple :
    https://www.freeformatter.com/java-regex-tester.html

    Edit :Et l'enchaînement des conditions pose question : si la ligne commence par "Ap", que tu testes après l'emploi de ta regex, ça activera le cas testé par la regex et non le cas où le test est




  4. #4
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Cincinnatus Voir le message

    [a-zA-Z] remonte tous les caractères alphabétiques, où qu'ils se trouvent dans la chaîne testée :
    1000dddd -> (d,d,d,d)

    ^[a-zA-Z] remonte le premier caractère alphabétique s'il est le premier caractère de la chaîne testée :
    1000dddd -> rien
    dddd -> d
    Attention car ceci est vrai pour le find() qui va chercher les diverses parties d'une chaîne, mais pas pour matches() qui va comparer la totalité de la chaîne.


    @Misaka62 : que doit faire ta regexp ?
    Parce que là elle vérifie que la chaîne ne comporte qu'un seul caractère...

Discussions similaires

  1. [vim] Plusieurs highlight/match ne fonctionnent pas
    Par gege2061 dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 26/01/2010, 15h35
  2. Regex qui ne fonctionne pas
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 0
    Dernier message: 22/10/2009, 20h10
  3. Regex qui ne fonctionne pas
    Par obito dans le forum Windows Forms
    Réponses: 8
    Dernier message: 25/04/2009, 00h45
  4. match ne fonctionne pas bien
    Par Tara59 dans le forum Excel
    Réponses: 4
    Dernier message: 03/03/2008, 11h43
  5. regex qui ne fonctionne pas?
    Par linux dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 14/10/2005, 18h22

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