Редактировать 4 (последний): полностью забыл, что нужно \\s|^
в начале
Редактировать 3: Немного подправлен, чтобы учесть, что char после searchString может быть концом строки search P = Pattern.compile("\\s"+Pattern.quote(searchString)+"(\\s|$)");
Редактировать 2: Хорошо, я понял! searchP = Pattern.compile("\\s"+Pattern.quote(searchString)+"\\s");
Не знаю, почему я не заметил этот метод цитат ... ну, хорошо, впервые за все:)
Редактировать: Оказывается, я опередил себя - код для специальных символов вообще не помог, поскольку literalP преобразуется в строку в searchP и теряет правило LITERAL
для пользователя, строка.
Я думаю, что понял! Следующее преобразует строку пользователя в литерал, а затем помещает ее в новый шаблон, который позволяет \\s
. Если кто-то видит проблемы с этим, пожалуйста, дайте мне знать.
Pattern literalP = Pattern.compile(searchString, Pattern.LITERAL);
Pattern searchP = Pattern.compile("\\s"+literalPattern+"\\s+");