用于正則表達(dá)式的Java API 聲明\s將與空白匹配。因此,正則表達(dá)式\\s\\s應(yīng)匹配兩個(gè)空格。Pattern whitespace = Pattern.compile("\\s\\s");matcher = whitespace.matcher(modLine);while (matcher.find()) matcher.replaceAll(" ");這樣做的目的是用單個(gè)空格替換兩個(gè)連續(xù)空格的所有實(shí)例。但是,這實(shí)際上不起作用。我是否對正則表達(dá)式或“空白”一詞有嚴(yán)重的誤解?
3 回答

翻過高山走不出你
TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
是的,您需要獲取matcher.replaceAll()的結(jié)果:
String result = matcher.replaceAll(" ");
System.out.println(result);

九州編程
TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
當(dāng)我向Regexbuddy(正則表達(dá)式開發(fā)人員應(yīng)用程序)論壇發(fā)送問題時(shí),我得到了對\ s Java問題的更準(zhǔn)確答復(fù):
“消息作者:Jan Goyvaerts
在Java中,簡寫\ s,\ d和\ w僅包含ASCII字符。...這不是Java中的錯(cuò)誤,而只是使用正則表達(dá)式時(shí)需要注意的許多事情之一。要匹配所有Unicode空格和換行符,可以在Java中使用[\ s \ p {Z}]。RegexBuddy尚不支持特定于Java的屬性,例如\ p {javaSpaceChar}(與[\ s \ p {Z}]完全相同的字符匹配)。
如果輸入僅是ASCII,則\ s \ s將匹配兩個(gè)空格。真正的問題在于OP的代碼,正如該問題的公認(rèn)答案所指出的那樣。”
添加回答
舉報(bào)
0/150
提交
取消