關於JAVA正則匹配空白字符的問題(全角空格與半角空格)
阿新 • • 發佈:2017-07-10
轉義 空白 測試 rgs com text color 如何 clas
今天遇到一個字符串,怎麽匹配空格都不成功!!!
我把空格復制到test.properties文件 顯示“\u3000” ,這是什麽? 這是全角空格!!!
查了一下 \s 不支持全角
1、"\s"匹配的是哪一種空格?
正則表達式中\s匹配任何空白字符,包括空格、制表符、換頁符等等;中文全角空格
\s 並不能匹配中文全角空格。
\s 只能匹配下面六種字符(詳見 java.util.regex.Pattern 的 API DOC):
- 半角空格( )
- 水平制表符(\t)
- 豎直制表符
- 回車(\r)
- 換行(\n)
- 換頁符(\f)
java代碼中的轉義 \\s
正則匹配0個或多個空格,我是這樣寫的 \\s*
正則匹配一個或多個空格,我是這樣寫的 \\s+
2、如何匹配全角空格
正則可以這麽寫:"[\\s\\p{Zs}]+" , 註意java代碼中的轉義。
3、測試
我的測試例子:
package com.test; public class zhengze { /** * 替換多個<br>成單個<br> * @param args */ public static void main(String[] args) { String str1= "...中間省略很多...<br> <br>想到自己煮花生仁湯這麽簡單~趕緊動手試試吧!<br><br> <br> <br> <br>"; String pattern = "<br>(\\s*<br>)+"; System.out.println("\\s* 替換的結果:"); System.out.println(str1.replaceAll(pattern,"<br>")); String str2= "...中間省略很多...<br> <br>想到自己煮花生仁湯這麽簡單~趕緊動手試試吧!<br><br> <br> <br> <br>"; String new_pattern = "<br>([\\s\\p{Zs}]*<br>)+"; System.out.println("[\\s\\p{Zs}]* 替換的結果:"); System.out.println(str2.replaceAll(new_pattern,"<br>")); } }
結果:
\s* 替換的結果: ...中間省略很多...<br> <br>想到自己煮花生仁湯這麽簡單~趕緊動手試試吧!<br> <br> <br> [\s\p{Zs}]* 替換的結果: ...中間省略很多...<br>想到自己煮花生仁湯這麽簡單~趕緊動手試試吧!<br>
關於JAVA正則匹配空白字符的問題(全角空格與半角空格)