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

删除特定标点符号的Java正则表达式,java,regex,formatting,replaceall,Java,Regex,Formatting,Replaceall,我正在使用java格式化大量的纯文本文件,我需要删除除撇号以外的所有标点符号。当我最初为replaceAll语句设置正则表达式时,它可以消除我所知道的一切,但现在我发现一个特定的文件/标点集不起作用 holdMe = holdMe.replaceAll("[,_\"-.!?:;)(}{]", " "); 我知道我之所以这么说是因为所有其他标点符号都被清除了,没有句号,逗号,等等。我已经尝试转义出()和{}字符,但仍然没有在这些字符上替换它。我一直在尝试使用Oracle文档自学regex

我正在使用java格式化大量的纯文本文件,我需要删除除撇号以外的所有标点符号。当我最初为
replaceAll
语句设置正则表达式时,它可以消除我所知道的一切,但现在我发现一个特定的文件/标点集不起作用

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

我知道我之所以这么说是因为所有其他标点符号都被清除了,没有句号,逗号,等等。我已经尝试转义出()和{}字符,但仍然没有在这些字符上替换它。我一直在尝试使用Oracle文档自学regex,但我似乎不明白为什么这样做不起作用。

与其具体指定要删除的每个字符,不如做相反的事情,说明要允许哪些字符,并在前面加上not

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

以上内容将用

替换除空格、字母数字字符和撇号以外的所有字符,而不是专门指定要删除的每个字符-为什么不做相反的操作,并说明要允许哪些字符,并在其前面加上not

holdMe = holdMe.replaceAll("[^a-zA-Z0-9'\\s]+"," ");
除空格、字母数字字符和撇号外,上述内容将替换为

检查以下内容:

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

this        is a test
选中此项:

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

this        is a test

此正则表达式将标记除撇号以外的所有标点符号

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

正则表达式的java字符串:

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

此正则表达式将标记除撇号以外的所有标点符号

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

正则表达式的java字符串:

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

你必须展示一些输入和输出的示例。问题不允许我包括我有问题的文本,它被识别为代码,所以这里是问题文本。输出结果与输入结果相同。**我们这样做是为了那些假释的黑鬼(我的街角笨蛋,他们把玻璃放进金子里){我们总是要这样做}即使我被锁着{我们仍然要这样做}(还有街区上的旧枪){我们仍然要这样做}对邻里警察{我们仍然要这样做}{我们仍然要这样做,我们总是要这样做}**你必须展示一些输入和输出的示例。问题不允许我包括我有问题的文本,它被识别为代码,所以这里是问题文本。输出结果与输入结果相同。**我们为那些假释的黑鬼(我街角的笨蛋,他们把玻璃放进金子里){我们总是要这么做}即使我被锁上了{我们仍然要这么做}(还有街区里的老枪){我们仍然要这么做}给邻里的警察{我们仍然要这么做}{我们仍然要这么做,我们总是要这么做}**不得不再加一个\来逃离那些人,但它仍然没有替换此代码段中的{}和()字符。必须添加另一个\以转义\s,但它仍然没有替换此代码段中的{}和()字符。这个答案将是完美的,只是问题是要排除撇号,它们是
\x27
,不是双引号字符或NUL。您可以更进一步,只需在正则表达式中直接使用
字符,这应该会更容易理解。这就是答案!这个答案将是完美的,除了问题要求排除撇号,即
\x27
,而不是双引号字符或NUL。您可以更进一步,只需在正则表达式中直接使用
'
字符,这将使它更容易理解。这就是答案!