Java正则表达式删除特定标点符号

时间:2014-07-14 16:59:42

标签: java regex formatting replaceall

我正在使用java格式化大量的纯文本文件,我需要删除除撇号之外的所有标点符号。当我最初设置replaceAll语句的正则表达式时,它可以摆脱我所知道的所有内容,除非现在我发现了一个特定的文件/标点集,它不能正常工作。

    holdMe = holdMe.replaceAll("[,_\"-.!?:;)(}{]", " ");

我知道我正在发表这个声明,因为所有其他标点符号都清除了,没有句号,逗号,等等。我已经尝试转义()和{}字符,但它仍然没有被替换为这些字符。我一直在尝试使用Oracle文档教自己正则表达式,但我似乎无法理解为什么这不起作用。

3 个答案:

答案 0 :(得分:6)

此正则表达式将标记除Apostrophes之外的每个标点符号

[\p{P}&&[^\u0027]]

正则表达式的java字符串:

"[\\p{P}&&[^\u0027]]"

答案 1 :(得分:1)

而不是专门指定要删除的每个字符 - 为什么不执行相反的操作,并指出要允许的状态,并在其前面加上not?

holdMe = holdMe.replaceAll("[^a-zA-Z0-9'\\s]+"," ");

以上内容将使用" "替换除空格,字母数字字符和撇号之外的所有内容。

答案 2 :(得分:1)

检查一下:

public static void main(String[] args) {
        /* use \\ (double) before { } [ ] */
        String m = "this:{[]}/; is a test".replaceAll("[\\[\\]\\{\\}\\/,_\"-.!?:;)(]", " ");
        System.out.println(m);
    }

输出:

this        is a test