Faire correspondre les chaînes avec l'expression régulière dans le cas d'un défaut
J'ai besoin de faire correspondre les chaînes dans mon tableau qui ne sont pas en commençant par "KO" de la chaîne.
J'ai essayé cette
String[] ar = {"KB_aaa","KB_BBB", "K_CCC", "!KBD", "kb_EEE", "FFFF"};
Pattern p = Pattern.compile("[^(^KB)].*");
for(String str : ar)
{
Matcher m = p.matcher(str);
if(m.matches())
System.out.println(str);
}
Mais toujours pas de matches "K_CCC".
Grâce
source d'informationauteur Arsen Alexanyan | 2011-10-05
Vous devez vous connecter pour publier un commentaire.
Une expression régulière qui correspond à tout ce pas en commençant par KO est:
De le faire en java:
Je ne voudrais pas utiliser les RegEx pour tout.
De la manière que votre question est libellée, je ne suis pas entièrement sûr de savoir si vous voulez le match pour être sensible à la casse ou non. Cette regex:
utilise le drapeau?i) pour désactiver la casse, et devrait faire ce que vous voulez.
Vous ne devriez pas utiliser RegExes partout. Il suffit de créer une façon simple de vérifier:
Et je pense que cette méthode est encore mieux dans la performance (pas que de la performance est nécessaire dans votre cas):
Ce que font les autres choses de cette deuxième façon de travailler?
Utiliser les regex
(?i)^(?!kb).*
pour la casse correspond. Elle permettra d'éviter KB234 Kb*432, kB2343 et kb23445.