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

  1. #1
    Membre confirmé
    Regexp avec des morceaux de caractères spéciaux dedans
    Bonjour à tous,

    j'ai une petite question concernant une Expression régulière Avec groovy : j'essaie de trouver les chaines qui contiennent des caractères spéciaux:

    import java.util.regex.Matcher
    import java.util.regex.Pattern
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
     
    def pattern = ~/([^a-zA-Z0-9])+/
    println (pattern.matcher(mavariable.matches())?1:0);


    je cherche à savoir quelles chaines contiennent des caractères spéciaux

    dans mavariable j'ai par exemple:
    hello/world
    ejection!
    ah bon ?
    bonjour
    /

    il me renvoie 0 tout le temps sauf pour le dernier...

    une idée ?

    d'avance merci !
    laloune
    Consultant B.I.
    Spécialité(s): Excel, SQL, Business Intelligence (Jedox Palo, Talend)

    "A problem worthy of attack proves its worth by fighting back." Piet Hein

  2. #2
    Modérateur

    Hum hum. Et comment est construite exactement ta regex ? Peux-tu nous dire, en français, ce que signifie chaque chose que tu as mis dedans ?

    Pas son effet final tout construit, ça non, tu l'as déjà dit. Ce que fait chaque morceau.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent sénior
    Salut,



    matches() vérifie que la totalité de la chaine correspondent bien au pattern, donc le résultat est tout à fait normal.

    Donc soit tu inverses ton pattern pour représenter les chaines valides, soit tu utilises find() qui recherche la présence d'un sous-élément correspondant au pattern.


    a++
    Cette signature n'a pas pu être affichée car elle comporte des erreurs.

  4. #4
    Membre confirmé
    Bonjour à vous deux et merci pour vos réponses,

    Donc soit tu inverses ton pattern pour représenter les chaines valides, soit tu utilises find() qui recherche la présence d'un sous-élément correspondant au pattern.
    ah ok, je vais donc utiliser find() du coup

    Peux-tu nous dire, en français, ce que signifie chaque chose que tu as mis dedans ?
    ok, je vais essayer:

    [^a-zA-Z0-9] => est censé représenter tout ce qui n'est pas minuscule, Majuscule ou chiffre. Selon moi le chapeau fait cela
    + => au moins un

    mais je n'ai pourtant pas l'impression que ca fonctionne ainsi...
    laloune
    Consultant B.I.
    Spécialité(s): Excel, SQL, Business Intelligence (Jedox Palo, Talend)

    "A problem worthy of attack proves its worth by fighting back." Piet Hein

  5. #5
    Modérateur

    Citation Envoyé par laloune Voir le message
    [^a-zA-Z0-9] => est censé représenter tout ce qui n'est pas minuscule, Majuscule ou chiffre. Selon moi le chapeau fait cela
    + => au moins un

    mais je n'ai pourtant pas l'impression que ca fonctionne ainsi...
    C'est pas "au moins un" c'est "et ce que je viens de dire, à l'endroit où je l'ai mis, il doit y être au moins une fois."

    Autrement dit, le + n'est pas magique. Il ne change rien au fait que, si tu mets rien d'autre devant ou derrière, alors il ne doit rien y avoir d'autre devant ou derrière.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

###raw>template_hook.ano_emploi###