Mon intention de base est de savoir si un dir dira A se trouve immédiatement dans le répertoire B ou non. Je le vérifie en java donc j'utilise des classes Pattern et Matcher.Comment capturer l'existence d'un caractère en Java
laisser dire homedir =/aa/bb/cc (répertoire personnel) DGDIR =/aa/bb/cc/dd/ee (non immédiatement à l'intérieur la maison dir) DIRC =/aa/bb/cc/dd (immédiatement dans le répertoire home) dirD =/aa/ff (hors répertoire de départ)
Je veux que la sortie soit vraie si le répertoire est immédiatement dans homeDir, sinon faux. Mon approche est de vérifier si le chemin homeDir correspond au chemin du répertoire donné. Si cela correspond, je vérifie s'il y a une partie/après la partie homeDir. Ceci est mon exemple de code
private static final String REGEX =
"homeDir"+"/"+"((.+)(/?)(.+))";
private static final String INPUT =
"/aa/bb/cc/dd/ee";
public static void main(String[] args) {
Pattern p = Pattern.compile(REGEX);
Matcher m = p.matcher(INPUT); // get a matcher object
boolean output = false;
while(m.find()) {
System.out.println("Total : "+m.group(1)+"First : "+m.group(2)+ "Slash : "+m.group(3)+"Last : "+m.group(4));
if(m.group(3).length()==0)
{// that means match found and immediately inside also
output = true;
}
}
Le eteint que je reçois est Total: jj/eeFirst: jj/eSlash: Dernier: e. Tout ce que je voulais, c'est que le slash soit capturé s'il en existe. Je pense d'abord. + Est gourmand et prend tout. J'ai essayé avec le quantificateur possessive (/? +) Mais le lancement Exception dans le fil "principal" java.util.regex.PatternSyntaxException: A la position 3 dans le modèle d'expression régulière: a tenté de répéter un jeton qui est déjà répété /aa/bb/cc /((.+)(/?+)(.+)) ^ me aider S'il vous plaît chaud pour aller à ce problème
simple et efficace – Ram
Oui, mais gardez à l'esprit différents séparateurs de fichiers sur différents os - pour gérer que je ferais un .replaceAll ("\\\\", "/") sur les deux paramètres au début qui est plus simple que d'utiliser le séparateur approprié. – pstanton