Looking for java Keywords? Try Ask4Keywords

Java Language Соответствие обратной косой черты


пример

Если вы хотите совместить обратную косую черту в своем регулярном выражении, вам придется ее избежать.

Обратная косая черта - это символ escape в регулярных выражениях. Вы можете использовать '\\', чтобы ссылаться на одну обратную косую черту в регулярном выражении.

Однако обратная косая черта также является символом escape в строках строки Java. Для того, чтобы регулярное выражение из строки буквальным, вы должны бежать каждый из его обратной косой черты. В строковом литерале «\\\\» можно использовать для создания регулярного выражения с «\\», которое, в свою очередь, может соответствовать «\».

Например, рассмотрите соответствующие строки, такие как «C: \ dir \ myfile.txt». Регулярное выражение ([A-Za-z]):\\(.*) Будет совпадать и предоставить букву диска в качестве группы захвата. Обратите внимание на удвоенную обратную косую черту.

Чтобы выразить этот шаблон в строковом литерале Java, каждая обратная косая черта в регулярном выражении должна быть экранирована.

    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:.
    }

Если вы хотите совместить две обратные косые черты, вы обнаружите, что используете восьмеричную строку, чтобы представить четыре в регулярном выражении, чтобы соответствовать двум.

    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'.
    }