Les expressions régulières semblent correspondre à la correspondance la plus longue possible. Par exemple:Négation de chaînes littérales dans une expression régulière Java
public static void main(String[] args) {
String s = "ClarkRalphKentGuyGreenGardnerClarkSupermanKent";
Pattern p = Pattern.compile("Clark.*Kent", Pattern.CASE_INSENSITIVE);
Matcher myMatcher = p.matcher(s);
int i = 1;
while (myMatcher.find()) {
System.out.println(i++ + ". " + myMatcher.group());
}
}
génère la sortie
- ClarkRalphKentGuyGreenGardnerClarkSupermanKent
Je voudrais que cette sortie
- ClarkRalphKent
- ClarkSupermanKent
J'ai essayé des modèles comme:
Pattern p = Pattern.compile("Clark[^((Kent)*)]Kent", Pattern.CASE_INSENSITIVE);
qui ne fonctionnent pas, mais vous voyez ce que je veux dire. Je veux que la chaîne de Clark à Kent ne contienne aucune occurrence de Kent.
Cette chaîne:
ClarkRalphKentGuyGreenGardnerBruceBatmanKent
devrait générer une sortie
- ClarkRalphKent
voir http://perldoc.perl.org/perlre.html –