2

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

首先我知道:给定一个字符串和一个正则表达式,如何用替换字符串替换所有匹配这个正则表达式的字符串?使用 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);

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

4

2 回答 2

5
[^a-zA-Z]+

会做得很好。

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

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

于 2008-11-22T12:30:12.707 回答
2
String unwantedCharactersRegex = "[^a-zA-Z]"

这匹配单个非字母。因此,每个非字母都被替换为 +。你需要说“一个或多个”,所以试试

String unwantedCharactersRegex = "[^a-zA-Z]+"
于 2008-11-22T12:31:52.673 回答