我想要一个正则表达式来删除除下划线之外的所有特殊字符。我可以替换所有特殊字符,但我不知道如何保留下划线。这是删除所有特殊字符的代码,
String myname= "!john_smith@#-".replaceAll("\\p{Punct}+", "");
任何想法如何修改正则表达式以便我保持下划线?
谢谢, 帕特里克
答案 0 :(得分:9)
好\\p...
与[^\\P...]
相同(否定字符类不具有该属性),然后您也可以将下划线放在那里:< / p>
"[^\\P{Punct}_]+"
或者,使用否定前瞻
"(?:(?!_)\\p{Punct})+"
另外,看到你的例子,也许这样简单的东西对你来说已经足够了:
"[^\\w\\s]+"
将删除除字母,数字,下划线和空格外的所有内容。
答案 1 :(得分:6)
使用设置差异:
System.out.println("#%a#%^$^_#$%b#$".replaceAll("[\\p{Punct}&&[^_]]", ""));
打印
a_b