2012-03-23 3 views
0

Je suis totalement débutant en Java.JAVA équivalent à Javascript REGEX

En javascript j'ai ce regex:

/[^0-9.,\-\ ]/gi 

Comment puis-je faire la même chose en java?

+0

Vous ne pouvez pas dire "virgule dans l'espace" comme vous l'avez fait. Échappez au personnage d'HYPHEN-MOINS. – tchrist

+1

Cela fonctionnera également si vous placez le trait d'union non échappé comme le dernier ou le premier caractère de la classe de caractères. Pas besoin d'échapper au personnage de l'espace! – Eric

Répondre

0

Si vous voulez faire correspondre à plusieurs reprises contre cette regex, vous feriez:

Pattern p = Pattern.compile("(?i)[^0-9.,-\ ]"); 
Matcher m = p.matcher(targetString); 

Ensuite, utilisez les méthodes de matcher dans une boucle pour obtenir la correspondance que vous voulez. Le "i" est un indicateur d'insensibilité à la casse (dont vous n'avez pas besoin car aucun caractère n'est spécifié), mais je ne suis pas sûr de l'équivalent du drapeau "g". Je pense que c'est simplement pour essayer de appliquez le motif plusieurs fois à la chaîne cible plutôt que d'essayer de faire correspondre la chaîne entière, ce que fait le code ci-dessus.

En outre, le motif ci-dessus ne correspondra qu'à un caractère à la fois, vous pouvez en fait vouloir [^0-9.,-\ ]*, qui correspondra à 0 caractères ou plus, avidement. Je voudrais lire les documents sur la classe Pattern si j'étais vous.

+0

L'utilisation de la méthode 'find' dans une boucle while est l'équivalent de l'indicateur'/g' pour la correspondance progressive. – tchrist