使用[^ a-zA-Z]正则表达式替换单词时出现问题

Vij*_*Dev 2 java regex replace

只是无法得到这一个,谷歌搜索也没有多大帮助..

首先我知道:给定一个字符串和一个正则表达式,如何用替换字符串替换所有匹配此正则表达式的字符串?在String类中使用replaceAll()方法.

现在我无法做到的事情.我现在在我的代码中的正则表达式是[^ a-zA-Z],我确信这个正则表达式肯定会有一个范围.只有一些字符可能会添加到列表中.在下面的代码中我需要输出的是Worksheet + blah但是我使用replaceAll()得到的是Worksheet ++++ blah

String homeworkTitle = "Worksheet%#5_blah";
String unwantedCharactersRegex = "[^a-zA-Z]";
String replacementString = "+";
homeworkTitle = homeworkTitle.replaceAll(unwantedCharactersRegex,replacementString);
System.out.println(homeworkTitle);
Run Code Online (Sandbox Code Playgroud)

实现我希望的输出的方法是什么?我在这里缺少任何Java方法吗?

Von*_*onC 5

[^a-zA-Z]+
Run Code Online (Sandbox Code Playgroud)

会做得很好.

你需要一个贪婪的量词来匹配尽可能多的非字母字符,并将所有匹配替换为一个'+'(a - 默认情况下 - 贪心量词)

注意:[^a-zA-Z]+?会使'+'量词变得懒惰,并且会给你相同的结果[^a-zA-Z],因为它一次只匹配一个非字母字符.