Regex de ponctuation en Java
D'abord, je suis lire la documentation que suivre
http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html
Et je veux trouver tout caractère de ponctuation à l'EXCEPTION de @',&, mais je ne suis pas tout à fait comprendre.
Est ici :
public static void main( String[] args )
{
//String to be scanned to find the pattern.
String value = "#`~!#$%^";
String pattern = "\\p{Punct}[^@',&]";
//Create a Pattern object
Pattern r = Pattern.compile(pattern, Pattern.CASE_INSENSITIVE);
//Now create matcher object.
Matcher m = r.matcher(value);
if (m.find()) {
System.out.println("Found value: " + m.groupCount());
} else {
System.out.println("NO MATCH");
}
}
Résultat est PAS à la hauteur.
Est-il incompatibilité ?
Grâce
MRizq
source d'informationauteur MRizq
Vous devez vous connecter pour publier un commentaire.
Vous êtes correspondant à deux caractères, pas un seul. À l'aide d'un (négatif) d'anticipation devrait résoudre la tâche:
Vous pouvez utiliser caractère de soustraction ici:
L'ensemble du motif représente une classe de caractères,
[...]
qui contient un\p{Punct}
POSIX classe de personnagele&&
opérateur d'intersection et[^...]
nié le caractère de classe.Unicode modificateur peut être nécessaire si vous prévoyez également correspondre à tous Unicode ponctuation:
Le modèle correspond tout signe de ponctuation (avec
\p{Punct}
) sauf@
'
,
et&
.Si vous avez besoin d'exclure plus de personnages, de les ajouter à la nié le caractère de classe. N'oubliez pas de toujours échapper
-
\
^
[
et]
à l'intérieur d'un Java regex classe de personnage/set. E. g. l'ajout d'une barre oblique inverse et-
pourrait ressembler"[\\p{Punct}&&[^@',&\\\\-]]"
ou"[\\p{Punct}&&[^@',&\\-\\\\]]"
.Java démo:
De sortie: