Регулярное выражение Java для удаления всех несимвольных букв EXCEPT пробелов
Я пытаюсь написать регулярное выражение в Java, которое удаляет все не буквенно-цифровые символы из абзаца, за исключением пробелов между словами.
Это код, который я написал:
paragraphInformation = paragraphInformation.replaceAll("[^a-zA-Z0-9\s]", "");
Однако компилятор дал мне сообщение об ошибке, указывающее на то, что он говорит, что это незаконный символ эвакуации. Программа скомпилировала ОК до того, как я добавил \s в конец регулярного выражения, но проблема заключалась в том, что пробелы между словами в абзаце были удалены.
Как я могу исправить эту ошибку?
Ответы
Ответ 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