В чем разница между \\s+ и \s+

Я знаю, что одним из регулярных выражений является \s+, что означает один или несколько пробелов. Но во многих ссылках, которые я видел,

Почему они используют двойную обратную косую черту \\s+ вместо одной обратной косой черты \s+ ?

Например, в этом коде, который я получаю в stackoverflow:

import java.math.*;
import java.util.*;
import static java.util.Arrays.*;
import static java.lang.Math.*;
public class Initials {
  public String getInitials(String s) {

    String r = "";
    for(String t:s.split("\\s+")){
      r += t.charAt(0);
    }
    return r;
  }


  void p(Object... o) {
          System.out.println(deepToString(o));
      }


}

И вывод из этого кода:

Пример ввода: Джон Фицджеральд Кеннеди

Возвращает: jfk


person alramdein    schedule 20.09.2018    source источник
comment
Вы должны ввести две обратные косые черты внутри литерала Java String в двойных кавычках, чтобы включить в строку один символ обратной косой черты. Обратная косая черта, за которой следует что-либо еще, означает что-то особенное.   -  person Kevin Anderson    schedule 20.09.2018
comment
О, и разница между "\s+" и "\\s+" заключается в том, что "\\s+" дает вам строку, содержащую желаемое регулярное выражение обратной косой черты, за которой следует s, за которым следует знак плюс, а "\s+" вызывает ошибку компиляции, потому что \s не является допустимой escape-последовательностью строки Java. .   -  person Kevin Anderson    schedule 20.09.2018


Ответы (1)


В Java и некоторых других языках программирования обратную косую черту можно интерпретировать как часть самой строки, а не как часть регулярного выражения. Таким образом, \\s в строке просто означает \s, когда он переходит к части регулярного выражения. Это означает, что \\ просто экранирует саму обратную косую черту, так что это буквальная обратная косая черта.

person Vlam    schedule 20.09.2018
comment
ааа я вижу .. спасибо кстати - person alramdein; 04.10.2018