1. 程式人生 > >Java正則入門(1)——去除字串頭尾空格

Java正則入門(1)——去除字串頭尾空格

在其他語言中,\\ 表示:我想要在正則表示式中插入一個普通的(字面上的)反斜槓,請不要給它任何特殊的意義。

在 Java 中,\\ 表示:我要插入一個正則表示式的反斜線,所以其後的字元具有特殊的意義。

所以,在其他的語言中(如Perl),一個反斜槓 \ 就足以具有轉義的作用,而在 Java 中正則表示式中則需要有兩個反斜槓才能被解析為其他語言中的轉義作用。也可以簡單的理解在 Java 的正則表示式中,兩個 \\ 代表其他語言中的一個 \,這也就是為什麼表示一位數字的正則表示式是 \\d,而表示一個普通的反斜槓是 \\\\。

一個字串其實就是一個簡單的正則表示式,例如 Hello World

 正則表示式匹配 "Hello World" 字串。

java.util.regex 包主要包括以下三個類:

  • Pattern 類:

    pattern 物件是一個正則表示式的編譯表示。Pattern 類沒有公共構造方法。要建立一個 Pattern 物件,你必須首先呼叫其公共靜態編譯方法,它返回一個 Pattern 物件。該方法接受一個正則表示式作為它的第一個引數。

  • Matcher 類:

    Matcher 物件是對輸入字串進行解釋和匹配操作的引擎。與Pattern 類一樣,Matcher 也沒有公共構造方法。你需要呼叫 Pattern 物件的 matcher 方法來獲得一個 Matcher 物件。

  • PatternSyntaxException:

    PatternSyntaxException 是一個非強制異常類,它表示一個正則表示式模式中的語法錯誤。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
public class Main
{
    private static String REGEX = "^\\s*|\\s*$";
    private static String INPUT = "  hello world   ";
    private static String REPLACE = "";
 
    public static void main(String[] args) {
       Pattern p = Pattern.compile(REGEX);
       // get a matcher object
        System.out.println("original length: "+INPUT.length());
       Matcher m = p.matcher(INPUT); 
       INPUT = m.replaceAll(REPLACE);
       System.out.println("new length: "+INPUT.length());
       System.out.println(INPUT);
   }
}

輸出:original length: 16 new length: 11 hello world