我已经尝试了很多但是找到了一种方法将这两个正则表达式组合在replace_all中。
"test String".replaceAll("(?i)[^a-zßäöü]", " ").replaceAll(" +", " "));
第一个正则表达式删除每个符号,这不是德语的一部分,第二个正则表达式删除每个空格组合2或更多。 (我怎么说,它应该是2个或更多的空间?因为+意味着至少1个,对吗?)
谢谢:)
答案 0 :(得分:5)
在某些情况下,组合替换并不容易,因为第一次替换可能会产生一些结果,应该包含在第二次替换中。
在你的情况下
a-zßäöü
,换句话说,如果您有"ab.,!@#cd ef
之类的数据,它会首先转换为ab cd ef
,然后转换为ab cd ef
。
换句话说,您正在替换一个或多个字符的集合,这些字符不是您用一个空格接受的字符。所以你可能应该没那么简单
replaceAll("(?i)[^a-zßäöü]+", " ") // space is also included in [^a-zßäöü]
// but that should be fine since replacing
// space with space shouldn't break anything
// (especially if it worked in your original solution)