2012-03-18 6 views
0

У меня есть программа, которая фильтрует строку и сохраняет английские символы и смайлики. Я пытаюсь получить регулярное выражение, которое хранит смайлики наподобие :),: D, :(и т. Д., Но выводит одиночные ':' или '(' или ')' ... В основном я хочу ':' и ')' вместе еще мне нужно их отфильтровать .... В моей программе я могу хранить смайлики, но я также получаю: и) вместе с ним ... Можете ли вы, пожалуйста, помочь мне?Сохранять смайлики, Java Regex

String pattern = "[^\\w^\\s^(:))]"; 
Pattern p = Pattern.compile(pattern); 
Matcher m = p.matcher(text); 
text = m.replaceAll(""); 

Благодарим за помощь.

+0

Имейте в виду, что мы все ненавидим IM-клиенты и другие программы, заменяя такие вещи на куски кода или другие необычные тексты своими изображениями. Наиболее распространенным является '8)' – kirilloid

+0

offtopic: @kirilloid _no, наиболее распространенными являются '(e)' и '(n)' _ – c69

ответ

1

Вы пытаетесь использовать группировку скобок внутри квадратных скобок. Это не работает, поскольку в квадратных скобках скобки теряют свое особое значение.

Квадратные скобки определяют character class, который представляет собой один atom, а не последовательность атомов. Вместо этого вы должны просто использовать альтернативу с двумя ветвями: одну для : и одну для скобок, D и т. Д. И использовать look-ahead and look-behind в каждой ветке.

Подробнее о синтаксисе регулярных выражений here.

Также вы можете рассмотреть некоторые более сложные смайлики, такие как :-).

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