Удаление специальных символов и символов Word после специальных символов, за которыми следует Whitespace в Java

Если заголовок не ясен, вот примеры

Я хочу удалить все специальные символы в строке, символ слова после специального символа, за которым следует пробел.

String = "Here is the world first movie. #movie";

с приведенным выше примером, мне нужен вывод как

"Here is the world first movie movie";

Я пробовал много регулярных выражений, чтобы добиться этого, но я не могу попробовать

replaceAll("[^\\w]\\w{1}\\s", " ");

но он не работает, можете ли вы сказать мне Regex для этого с объяснением.

заранее спасибо

Изменить: требование - я хочу удалить специальный символ, например, в #movie, а также удалить специальный символ с одним символом, за которым следует пробел, как в world favorite конечный результат должен быть world favorite.

САМЫЙ ВЕРОЯТНО ХАРАКТЕР ПОСЛЕ СПЕЦИАЛЬНЫХ ЧАРОВ БУДЕТ 's'. например, в world's, India's, john's

2 ответа

Наконец, я заставил его работать многими проб и ошибок, Final Regex String [^a-zA-Z\\s]s?(\\s)?

str.replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1");

Вот пояснение,

[^a-zA-Z\\s]s? => Найти все специальные символы, кроме Белого пространства, за которым следует одно или ноль s

(\\s)? => и сразу же следует одно или нулевое пустое пространство.

Здесь я сгруппировал (\\s) becoz, я хочу использовать это в функции replaceAll() как 2-й параметр для замены в качестве $1.

Ответ

String orig = "Here is the world first movie. #movie";'
System.out.println(orig..replaceAll("[^a-zA-Z\\s]s?(\\s)?", "$1"));

Окончательный выход будет Here is the world first movie movie


String input = "Here is the world first movie. #movie"; String output = input.replaceAll("[!@#$%^&*][a-z]+", ""); System.out.println(output);

Regex - [! @# $% ^ & *] [Az] +

[!@#$%^&*] - tests for special character for the first character [a-z]+ - tests for word

licensed under cc by-sa 3.0 with attribution.