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

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

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