Java Language Correspondant à une barre oblique inverse


Exemple

Si vous souhaitez faire correspondre une barre oblique inverse dans votre expression régulière, vous devrez y échapper.

La barre oblique inverse est un caractère d'échappement dans les expressions régulières. Vous pouvez utiliser '\\' pour faire référence à une seule barre oblique inverse dans une expression régulière.

Cependant, la barre oblique inverse est également un caractère d'échappement dans les chaînes de caractères Java. Pour créer une expression régulière à partir d'un littéral de chaîne, vous devez échapper à chacune de ses barres obliques inverses. Dans une chaîne, le littéral '\\\\' peut être utilisé pour créer une expression régulière avec '\\', qui à son tour peut correspondre à '\'.

Par exemple, considérez la correspondance de chaînes comme "C: \ dir \ myfile.txt". Une expression régulière ([A-Za-z]):\\(.*) Correspondra et fournira la lettre de lecteur en tant que groupe de capture. Notez le double backslash.

Pour exprimer ce modèle dans un littéral de chaîne Java, chacune des barres obliques inverses de l'expression régulière doit être échappée.

    String path = "C:\\dir\\myfile.txt";
    System.out.println( "Local path: " + path ); // "C:\dir\myfile.txt"
    
    String regex = "([A-Za-z]):\\\\.*"; // Four to match one
    System.out.println("Regex:      " + regex ); // "([A-Za-z]):\\(.*)"
    
    Pattern pattern = Pattern.compile( regex );
    Matcher matcher = pattern.matcher( path );
    if ( matcher.matches()) {
        System.out.println( "This path is on drive " + matcher.group( 1 ) + ":.");
        // This path is on drive C:.
    }

Si vous voulez faire correspondre deux barres obliques inverses, vous vous retrouverez à utiliser huit dans une chaîne littérale, pour représenter quatre dans l'expression régulière, pour correspondre à deux.

    String path = "\\\\myhost\\share\\myfile.txt";
    System.out.println( "UNC path: " + path ); // \\myhost\share\myfile.txt"
    
    String regex = "\\\\\\\\(.+?)\\\\(.*)"; // Eight to match two
    System.out.println("Regex:    " + regex ); // \\\\(.+?)\\(.*) 
    
    Pattern pattern = Pattern.compile( regex );
    Matcher matcher = pattern.matcher( path );
    
    if ( matcher.matches()) {
        System.out.println( "This path is on host '" + matcher.group( 1 ) + "'.");
        // This path is on host 'myhost'.
    }