Java正則表示式中的元字元


正則表示式 (Regex) 指的是正則表示式。可以使用正則表示式作為 API 來定義模式以搜尋或修改文字。它經常用於指定字串約束,包括密碼和電子郵件驗證。瞭解此術語後,您可以使用正則表示式來評估您的正則表示式。

Java 正則表示式在 java.util.regex 包中提供了三個類和一個介面,分別是 MatchResult 介面、Matcher 類、Pattern 類和 PatternSyntaxException 類。Java 正則表示式功能是透過 matcher 和 pattern 類提供的。

Java正則表示式中的元字元

Java正則表示式中的元字元作為常用匹配模式的簡寫程式碼。元字元前面帶有反斜槓 (\)。下面列出了所有元字元

正則表示式

描述

.

任何字元(可能匹配也可能不匹配終止符)

\d

任何數字,[0-9] 的簡寫

\D

任何非數字,[^0-9] 的簡寫

\s

任何空白字元,[\t\n\x0B\f\r] 的簡寫

\S

任何非空白字元,[^\s] 的簡寫

\w

任何單詞字元,[a-zA-Z_0-9] 的簡寫

\W

任何非單詞字元,[^\w] 的簡寫

\b

單詞邊界

\B

非單詞邊界

元字元示例

// Java program to demonstrate all the meta characters in Java Regex
import java.io.*;
import java.util.regex.*;
public class example {
   public static void main(String[] args) {
      // \d- Number
      // \D- Non-Digit
      // \s- Any whitespace
      // \S- Non whitespace Character
      // \w- Any word character like numbers/ characters
      // \W- Special symbols
      System.out.println(Pattern.matches(
         "\d\D\s\S\w\W", "1G FG!"));    // true
      System.out.println(Pattern.matches(
         "\d\D\s\S\w\W", "Hello"));     // false
   }
}

輸出

true
false

元字元解釋

數字和非數字元字元 (\d, \D)

示例

// Java program to demonstrate the Digit and Non-Digit related Meta Characters

import java.io.*;
import java.util.regex.*;
public class example {
   Public static void main(String[] args) {
      // \d represents a digit
      // represents a number so return true
      System.out.println(Pattern.matches("\d", "2"));  // true

      // Comparing a number with character so return false
      System.out.println(Pattern.matches("\D", "a"));   // false

      // \D represents non digits
      // Comparing a non-digit with character so return
      // true
      System.out.println(Pattern.matches("\D", "a"));  // true

      // Comparing a non-digit with a digit so return
      // false
      System.out.println(Pattern.matches("\D", "2"));  // false

   }
}

輸出

true
false
true
false

解釋

d 元字元表示 0 到 9 的數字。因此,當我們在範圍內比較 "d" 時,它返回 true。否則返回 false。

D 元字元表示非數字,它接受除數字之外的任何字元。因此,當我們將 "D" 與任何數字進行比較時,它返回 false。否則返回 true。

空白和非空白元字元 (\s, \S)

示例

// Java program to demonstrate the Whitespace and Non whitespace Meta Characters
import java.io.*;
import java.util.regex.*;
Class example {
   public static void main(String[] args) {
      // comparing any whitespace character with a white
      // space so return else false
      System.out.println(Pattern.matches("\s", " "));   // true
      System.out.println(Pattern.matches("\s", "2"));   // false
 
      // comparing any non-whitespace character with a non
      // white space character so return true else false
      System.out.println(Pattern.matches("\S", "2"));   // true
      System.out.println(Pattern.matches("\S", " "));   // false
   }
}

輸出

true 
false
true
false

解釋

s 代表空格字元,例如空格、製表符、換行符等。因此,當我們將 "s" 與空格字元進行比較時,它將返回 true。否則返回 false

S 代表非空白字元,它接受除空白字元之外的所有字元,因此當我們將 "S" 與空格字元進行比較時,它將返回 false。否則返回 true。

單詞和非單詞元字元 (\w, \W)

示例

// Java program to demonstrate the Word and Non-Word Meta Characters
import java.io.*;
import java.util.regex.*;
public class example {
   public static void main(String[] args){
      // comparing any word character with a word
      // character so return true else false
      System.out.println(Pattern.matches("\w", "a"));  // true
      System.out.println(Pattern.matches("\w", "2"));  // true
      System.out.println(Pattern.matches("\w", "$"));  // false

      // comparing any non-word character with special
      // symbols and whitespaces return true else false
      System.out.println(Pattern.matches("\W", "2"));  // false
      System.out.println(Pattern.matches("\W", " "));  // true
      System.out.println(Pattern.matches("\W", "$"));  // true
   }
}

輸出

true
true
false
false
true
true

解釋

w 代表單詞字元,它接受字母(大寫和小寫)和數字 [0-9]。因此,當我們將 "w" 與字母或數字進行比較時,它返回 true。否則返回 false。

W 代表非單詞字元,它接受除字母和數字之外的任何字元。因此,當我們將 "W" 與字母或數字進行比較時,它返回 false。否則返回 true。

單詞和非單詞元字元 (\b, \B)

示例

// Java program to demonstrate the Word and Non Word boundary Meta Characters
import java.io.*;
import java.util.regex.*;
class example {
   public static void main(String[] args) {
      // \b says that a string must have boundary letters
      // of word characters
      System.out.println(Pattern.matches("\bexample\b", "example")); // true
      System.out.println(Pattern.matches("\b@example\b", "@example")); // false
  
      // \B says that a string must have non- word characters as boundaries
      System.out.println(Pattern.matches("\B@example@\B", "@example@")); //true
      System.out.println(Pattern.matches("\Bexample\B", "example"));  //false

   }
}

輸出

true
false
true
false

解釋

根據符號 b,字串必須具有單詞字元(例如數字或字母)的邊界元素。由於在這種情況下,GFG 字串包含作為單詞字元的邊界 (G, G),因此它返回 true。@GFG 字串的邊界元素是 @、G,其中 @ 不是單詞字元,因此返回 false。

B 表示字串的邊界元素必須是非單詞字元;允許任何非數字或字母的內容。由於 @GFG@ 字串的邊界是 @、@ 非單詞字元,因此它返回 true。GFG 字串的邊界元素是 G 和 G,它們是單詞字元,因此返回 false。

結論

對於尋求檢測或操作文字資訊的程式設計師來說,正則表示式(通常稱為正則表示式)提供了一種有效的解決方案。透過在字串中定義模式,開發人員可以輕鬆找到所需內容,甚至可以修改其外觀。Java 正則表示式類位於 java.util.regex 包中。在使用任何 Java 正則表示式方法之前,需要匯入它。Java 正則表示式包含三個類和一個介面,分別是 pattern、matcher、PatternSyntaxException 和 MatchResult 介面。

更新於:2023年8月1日

692 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告