我正在使用java格式化大量的纯文本文件,我需要删除除撇号之外的所有标点符号。当我最初设置replaceAll
语句的正则表达式时,它可以摆脱我所知道的所有内容,除非现在我发现了一个特定的文件/标点集,它不能正常工作。
holdMe = holdMe.replaceAll("[,_\"-.!?:;)(}{]", " ");
我知道我正在发表这个声明,因为所有其他标点符号都清除了,没有句号,逗号,等等。我已经尝试转义()和{}字符,但它仍然没有被替换为这些字符。我一直在尝试使用Oracle文档教自己正则表达式,但我似乎无法理解为什么这不起作用。
答案 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