我有一个过滤字符串并保留英文字符和表情符号的程序。我试图得到一个正则表达式,保持表情符号像:),:D,:(等但取出单个':'或'('或')'...基本上我想要':'和')'另外我需要过滤它们....在我的程序中,我能够保留表情符号,但我也得到了:和)以及它......你可以帮助我吗?
String pattern = "[^\\w^\\s^(:))]";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(text);
text = m.replaceAll("");
感谢您的帮助。
答案 0 :(得分:1)
您正尝试在方括号内使用分组括号。这不起作用,因为方括号内括号失去了它们的特殊含义。
方括号定义character class,它是单个atom,而不是原子序列。相反,您应该只使用两个分支替代方案:一个用于:
,一个用于括号,D
等,并在每个分支中使用look-ahead and look-behind。
您可以找到有关正则表达式语法here的更多信息。
此外,您可以考虑更复杂的表情符号,例如:-)
。