[Java] Regex

viot -  
 FranckM -
Bonjour,

J'ai un problème avec une expression régulière : j'ai le code suivant :

Pattern operator = Pattern.compile("[+-\*/r]");

Je voudrais trouver les + ou les - ou les * ou les / ou le charactère 'r'.

Merci de votre aide.
Configuration: Windows XP
Opera 9.25

1 réponse

  1. FranckM
     
    Attention, il faut savoir qu'en JAVA tu as également des métacaractères tel que +.
    Dans ces cas là il faut penser à les échapper afin de les traiter comme de simples caractères.

    NB: Petit subtilité pour JAVA, il faut échapper deux fois avec le " \" car le "\" à lui tout seul sert pour des classes prédéfinies telles que "\d", "\w", etc..

    Donc pour apporter une solution à ton pattern, la réponse est :

    Pattern operator = Pattern.compile("[\\+-\\*/r]+?");

    // le "+?" signifie 1 ou plusieurs fois. Cette écriture apporte plus de souplesse.

    Voilà, logiquement ça devrait marcher.

    PS: Désolé pour la réponse tardive, en ce moment j'surf un peu au sujet des regex et je suis tombé sur ce post à tout hasard. J'espère qu'il servira à d'autres.

    @+
    0