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

Java 使用[^a-zA-Z]正则表达式替换单词时出现问题,java,regex,replace,Java,Regex,Replace,就是找不到这个,谷歌也帮不了什么忙 首先,我知道:给定一个字符串和一个正则表达式,如何用替换字符串替换与该正则表达式匹配的所有字符串?使用String类中的方法 现在我做不到的事情。我现在代码中的正则表达式是[^a-zA-Z],我确信这个正则表达式肯定会有一个范围。只能向列表中添加更多的字符。在下面的代码中,我需要输出的是工作表+blah,但使用replaceAll()得到的是工作表++++blah 实现我期望的产出的方法是什么?这里有我缺少的Java方法吗 [^a-zA-Z]+ 我会做得很好

就是找不到这个,谷歌也帮不了什么忙

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

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

实现我期望的产出的方法是什么?这里有我缺少的Java方法吗

[^a-zA-Z]+
我会做得很好的

您只需要一个,就可以匹配尽可能多的非字母字符,并用一个“+”(默认情况下为贪婪量词)替换所有匹配项

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

String unwantedCharactersRegex = "[^a-zA-Z]"
这与单个非字母匹配。因此,每个非字母都将替换为+。你需要说“一个或多个”,所以试试看


谢谢大家!![^a-zA-Z]+效果非常好。。忽略了这个事实-我的错!我只是想推荐一下在哪里可以直观地测试regexp。不可否认,它是用javascript编写的,但对于不太复杂的表达式,它的工作原理应该与java中的相同。只是一个小问题:你不需要一个“贪婪”模式,就像你需要一个量词一样——表示一个或多个事件——默认情况下是贪婪的。
String unwantedCharactersRegex = "[^a-zA-Z]"
String unwantedCharactersRegex = "[^a-zA-Z]+"