Обратные косые черты в строковых литералах в исходном коде Java интерпретируются в соответствии с требованиями спецификации Java ™ Language в виде экранов Unicode (раздел 3.3) или других экранов символов (раздел 3.10.6). Поэтому необходимо удвоить обратную косую черту в строковых литералах, которые представляют собой регулярные выражения для защиты их от интерпретации компилятором байт-кода Java. Строковый литерал «\ b», например, соответствует одному символу обратного пробела при интерпретации как регулярное выражение, а «\\b
» соответствует границе слова.
См. https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html