關於JAVA正則匹配空白字元的問題(全形空格與半形空格)

來源:互聯網
上載者:User

標籤:java代碼   java   問題   round   class   print   new   system   結果   

今天遇到一個字串,怎麼匹配空格都不成功!!!

我把空格複製到test.properties檔案 顯示“\u3000” ,這是什嗎? 這是全形空格!!!

查了一下    \s    不支援全形

1、"\s"匹配的是哪一種空格?

Regex中\s匹配任何空白字元,包括空格、定位字元、換頁符等等;中文全形空格

\s 並不能匹配中文全形空格。

\s 只能匹配下面六種字元(詳見 java.util.regex.Pattern 的 API DOC):

  1.   半形空格( )
  2.   水平定位字元(\t)
  3.   豎直定位字元
  4.   斷行符號(\r)
  5.   換行(\n)
  6.   換頁符(\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正則匹配空白字元的問題(全形空格與半形空格)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.