Шаблон регулярного выражения для исключения управляющих символов и включения вкладки всех языковых символов, а новая строка должна включать

У нас есть набор входных данных, таких как 'java-> Way-> Project test'. пример: введите здесь описание изображения

Нам нужно исключить только управляющие символы. мы использовали [\p{C}] для сопоставления этих символов, к сожалению, это соответствует пространству табуляции и символам новой строки. Пожалуйста, дайте (действительный шаблон регулярного выражения) решения для решения этой проблемы.


person Maheshkumar Uthamaraj    schedule 21.11.2016    source источник
comment
мы использовали [\p{C}|\t|\r\n]* не работает   -  person Maheshkumar Uthamaraj    schedule 21.11.2016
comment
мы также пробовали [^P\{Cc}\t\r\n], но не работали   -  person Maheshkumar Uthamaraj    schedule 21.11.2016


Ответы (1)


В Java вы можете использовать это регулярное выражение:

[\p{Cntrl}&&[^\p{Space}]]

Это будет соответствовать управляющему символу, например [\x00-\x1F\x7F], за исключением пробела, например [ \t\n\x0B\f\r].

Справочник по RegEx по Java

В Java используйте:

String re = "[\\p{Cntrl}&&[^\\p{Space}]]";

Пример:

String title = "xyz a\u0000b\u0007c\u008fd\u0009 - foo \u0009 bar";
title = title.replaceAll("[\\p{Cntrl}&&[^\\p{Space}]]", "");
System.out.printf("[%s]%n", title);
//=> [xyz abcd   - foo   bar]
person anubhava    schedule 21.11.2016
comment
Привет, мы пытались, но также удаляются символы табуляции и символы новой строки. какие-либо предложения - person Maheshkumar Uthamaraj; 21.11.2016
comment
Какова ваша примерная входная строка? - person anubhava; 21.11.2016
comment
java to Way to Project test, содержит управляющий символ, табуляцию и новую строку; бывший возьми это под вопрос изображение - person Maheshkumar Uthamaraj; 21.11.2016
comment
Я разместил пример кода, и он НЕ удаляет вкладку или пробел. - person anubhava; 21.11.2016
comment
у нас есть несколько разных сценариев, поэтому код не должен быть изменен, только шаблон регулярного выражения нуждается в поиске действительных (utf-8) кодовых точек, Matcher.match должен возвращать true, если (без управляющих символов) false, если (только управляющие символы) - person Maheshkumar Uthamaraj; 22.11.2016
comment
Когда вы используете .matches, он должен соответствовать полной строке. Например: "\u0007\u0008".matches("[\\p{Cntrl}&&[^\\p{Space}]]+") вернет true - person anubhava; 22.11.2016