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

标签 java regex string parsing

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

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

下面的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 类的更多信息可以找到 here 。但是,这对我没有帮助。

最佳答案

您可以使用 negative lookahead .

(?!")\\p{punct}

Rubular demo

Java example :

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

关于java - 如何使用 RegExp 替换除双引号之外的所有标点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9880941/

相关文章:

java - 使用 JSF 2.0 激活 FORM 身份验证时出现问题

java - 通用类问题!

java - 如何让我的按钮在 Android Studio 中打开第二个 Activity?

java - 使用模式在java中搜索和替换字符串

objective-c - 如何创建一个直接接受格式字符串作为参数的方法?

java - Tomcat的性能压力测试

ruby - 在 Ruby 中构建一个 "Semi-Natural Language"DSL

javascript - 正则表达式中的尖括号(< 或 >)是否特殊?

java - Android 中每十秒从服务器获取一次响应

python - 在python中拆分逗号分隔的字符串