0

我有一个过滤字符串并保留英文字符和表情符号的程序。我正在尝试获得一个正则表达式,它可以保留诸如 :) 、 :D 、 :( 等表情符号,但取出单个 ':' 或 '(' 或 ')' ...基本上我想要 ':' 和 ')'否则我需要过滤它们....在我的程序中,我可以保留表情符号,但我也得到了:和)连同它....你能帮帮我吗?

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

谢谢你的帮助。

4

1 回答 1

1

您正在尝试在方括号内使用分组括号。这不起作用,因为方括号内的括号失去了它们的特殊含义。

方括号定义了一个字符类,它是单个原子,而不是原子序列。相反,您应该简单地使用两个分支的替代方案:一个用于:括号,一个用于括号D等,并在每个分支中使用前瞻和后瞻。

您可以在此处找到有关正则表达式语法的更多信息。

此外,您可以考虑使用更复杂的表情符号,例如:-).

于 2012-03-18T21:31:49.090 回答