关于利用String类中的replaceAll方法去掉多余的空格

原String为:Hello! Game programming world!

System.out.println(before.replaceAll("^\s{1,}$"," "));---(1)
System.out.println(before.replaceAll("\s{1,}"," "));---(2)
执行的结果为:
Hello! Game programming world!
Hello! Game programming world!
为什么第(1)种方法没有能够实现去掉多余的空格呢?这两种写法有什么区别呢?

^匹配行开始
$匹配行结束

所以第一个正则表达式应该是匹配一个整行都是空格,空格数大于1

第二个就是匹配空格数大于1