如何使用RegExp替换除双引号之外的所有标点符号

我正在尝试做一些字符串清理。

我想从字符串中删除双引号之外的所有标点符号。

下面的trimPunctuation()函数可以很好地从字符串中删除所有标点符号。

有没有人知道删除所有标点符号但双引号的方法。

private String trimPunctuation( String string, boolean onlyOnce ) { if ( onlyOnce ) { string = string.replaceAll( "\\p{Punct}$", "" ); string = string.replaceAll( "^\\p{Punct}", "" ); } else { string = string.replaceAll( "\\p{Punct}+$", "" ); string = string.replaceAll( "^\\p{Punct}+", "" ); } return string.trim(); } 

有关标点符号unicode类的更多信息,请点击此处 。 但是,这对我没有帮助。

您可以使用负向前瞻 。

 (?!")\\p{punct} 

Rubular演示

Java示例 :

 String string = ".\"'"; System.out.println(string.replaceAll("(?!\")\\p{Punct}", ""));