根本无法得到这个,谷歌搜索也没有多大帮助..
我知道的第一件事:给定一个字符串和正则表达式,如何用替换字符串替换所有匹配此正则表达式的字符串?在String类中使用replaceAll()方法。
现在我无法做到。我现在在我的代码中的正则表达式是[^ a-zA-Z],我确信这个正则表达式肯定会有一个范围。只有一些字符可能会添加到列表中。以下代码中我需要的输出是工作表+ blah 但是我使用replaceAll()得到的是工作表++++ blah < / p>
String homeworkTitle = "Worksheet%#5_blah"; String unwantedCharactersRegex = "[^a-zA-Z]"; String replacementString = "+"; homeworkTitle = homeworkTitle.replaceAll(unwantedCharactersRegex,replacementString); System.out.println(homeworkTitle);
实现我希望的输出的方法是什么?我在这里缺少任何Java方法吗?
答案 0 :(得分:5)
[^a-zA-Z]+
很好。
你只需要一个greedy quantifier就可以匹配尽可能多的非字母字符,并将所有匹配替换为一个'+'(a - 默认情况下 - 贪心量词)
注意:[^a-zA-Z]+?
会使'+'量词变得懒惰,并且会给你与[^a-zA-Z]
相同的结果,因为它一次只匹配一个非字母字符。
答案 1 :(得分:2)
String unwantedCharactersRegex = "[^a-zA-Z]"
这匹配一个非字母。因此,每个单个非字母都被+替换。你需要说“一个或多个”,所以试试
String unwantedCharactersRegex = "[^a-zA-Z]+"