Java 字符类减法

Java 字符类减法,java,regex,Java,Regex,我正在使用一种特殊的模式,试图得到一个没有标点符号的句子。 我有这个: p = Pattern.compile("[\\p{Punct}\\s]+"); String[] all = p.split("int a = 4;"); 我得到了数组 all = {int, a, 4}; 这很好,但如果存在,我希望我的模式也保留“[]”。例如: String[] all = p.split("int[] a = 4;"); 得到 all = {int,[], a, 4}; 这是我唯一希望模式

我正在使用一种特殊的模式,试图得到一个没有标点符号的句子。 我有这个:

 p = Pattern.compile("[\\p{Punct}\\s]+");
 String[] all = p.split("int a = 4;");
我得到了数组

all = {int, a, 4};
这很好,但如果存在,我希望我的模式也保留“[]”。例如:

String[] all = p.split("int[] a = 4;");
得到

all = {int,[], a, 4};
这是我唯一希望模式添加“[]”的更改,而不是其他更改。 有什么办法吗?

试试这个:

Pattern p = Pattern.compile("[[\\p{Punct}&&[^\\[\\]]]\\s]+");

[
]
字符被视为标点符号。此正则表达式将在拆分字符串时排除它们。

谢谢:)太好了!我正在尝试添加字符“(/”),因此它也不会删除该字符。。。我尝试了一些选择,但它对我无效。不管我得到它!:)