Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我想要一个正则表达式来删除除下划线以外的所有特殊字符。我可以替换所有特殊字符,但我不知道如何保留下划线。这是删除所有特殊字符的代码,
String myname= "!john_smith@#-".replaceAll("\\p{Punct}+", "");
任何想法如何修改正则表达式以便我保留下划线?
谢谢,帕特里克
Well\\p...与(不[^\\P...]具有该属性的字符的否定字符类)相同,然后您也可以将下划线放在那里:
\\p...
[^\\P...]
"[^\\P{Punct}_]+"
或者,使用负前瞻
"(?:(?!_)\\p{Punct})+"
另外,看看你的例子,也许像这样简单的东西对你来说就足够了:
"[^\\w\\s]+"
将删除除字母、数字、下划线和空格之外的所有内容。
使用集差:
System.out.println("#%a#%^$^_#$%b#$".replaceAll("[\\p{Punct}&&[^_]]", ""));
印刷
a_b
参考:字符类