如何找到replace_all的正则表达式?

时间:2015-11-07 22:47:16

标签: java regex

我已经尝试了很多但是找到了一种方法将这两个正则表达式组合在replace_all中。

"test String".replaceAll("(?i)[^a-zßäöü]", " ").replaceAll(" +", " "));

第一个正则表达式删除每个符号,这不是德语的一部分,第二个正则表达式删除每个空格组合2或更多。 (我怎么说,它应该是2个或更多的空间?因为+意味着至少1个,对吗?)

谢谢:)

1 个答案:

答案 0 :(得分:5)

在某些情况下,组合替换并不容易,因为第一次替换可能会产生一些结果,应该包含在第二次替换中。

在你的情况下

  1. 您只是用空格替换非a-zßäöü
  2. 以后用一个替换两个或多个空格。
  3. 换句话说,如果您有"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)