matches
on возвращает true, если вся строка соответствует - она не соответствует подстроке.
Так что, если бы stringWithSingleSlash
было просто "\\"
вместо "mabye\\no"
, matches
вернул бы true.
Если вас смущает тот факт, что doubleSlash
соответствует одному обратному слешу, объяснение состоит в том, что "\\\\"
- это строка с двумя обратными слешами, а механизм регулярных выражений интерпретирует два обратных слеша как один экранированный обратный слеш (поскольку обратный слеш являетсяescape-символ в регулярных выражениях, а также в строковых литералах).