Подтвердить что ты не робот

Регулярное выражение Java для удаления всех несимвольных букв EXCEPT пробелов

Я пытаюсь написать регулярное выражение в Java, которое удаляет все не буквенно-цифровые символы из абзаца, за исключением пробелов между словами.

Это код, который я написал:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\s]", "");

Однако компилятор дал мне сообщение об ошибке, указывающее на то, что он говорит, что это незаконный символ эвакуации. Программа скомпилировала ОК до того, как я добавил \s в конец регулярного выражения, но проблема заключалась в том, что пробелы между словами в абзаце были удалены.

Как я могу исправить эту ошибку?

4b9b3361

Ответ 1

Вам нужно дважды уйти от символа \: "[^a-zA-Z0-9\\s]"

Java интерпретирует \s как escape-символ Java String, который действительно является недопустимым escape-кодом Java. Написав \\, вы выходите из символа \, по существу отправляя один символ \ в регулярное выражение. Этот \ затем становится частью escape-символа регулярного выражения \s.

Ответ 2

Вам нужно избежать \, чтобы регулярное выражение распознало \s:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");

Ответ 3

Виктория, вы должны написать здесь \\s not \s.

Ответ 4

Как правило, всякий раз, когда вы видите эту ошибку, это означает, что у вас есть только одна обратная косая черта, где вам нужно два:

paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\\s]", "");

Ответ 5

Пожалуйста, взгляните на этот сайт, вы можете проверить Java Regex онлайн и получить строковые шаблоны регулярных выражений назад:

http://www.regexplanet.com/advanced/java/index.html