2016-11-28 3 views
3

Я хочу удалить любой символ (включая одиночные символы в начале или конце строки). Например,java regex заменить любой символ пробелом

String s = "I am testing regex. This'll print results for A B c d^* () { } [ ] done ."; 
System.out.println(s); 

должен напечатать:

am testing regex. This'll print results for   done 

Я пробовал:

s = s.replaceAll("(\\s+.(?=\\s))", " "); 

, который дает мне:

I am testing regex. This'll print results for   done . 

Я хочу удалить начальные и конечные одиночные символы, а также в том же регулярном выражении.

+2

Любые * не-пробелы * char? Попробуйте ['.replaceAll (" (?

+0

Любой символ (включая пробельные символы, такие как «\ t»). – Alisa

+0

Либо '.replaceAll (" (?

ответ

1

Вы можете использовать

.replaceAll("(?s)(?<!\\S).(?!\\S)", " ") 

или

.replaceAll("(?<!\\S)[^ ](?!\\S)", " ") 

и, возможно, использовать trim() на результат. См. regex demo.

Деталь:

  • (?s) - это DOTALL встроенного варианта флага (так что . может соответствовать любому символу, включая символы конца строки)
  • (?<!\S) - отрицательно назад ', требующие либо начало строки или пробел до текущего местоположения
  • . - () какой-либо один символ (если это должно быть ничего, кроме места, используйте [^ ])
  • (?!\S) - отрицательный результат, который требует либо конца строки, либо пробела сразу справа от текущего местоположения.

Обратите внимание, что при необходимости вы можете дополнительно отрегулировать часть. Если вам нужно только совместить символы без пробелов, замените . на \S.

Смежные вопросы