位置:首頁 > Java技術 > Java基礎教程 > Java正則表達式

Java正則表達式

Java提供了java.util.regex包的模式正則表達式匹配。 Java正則表達式是非常相似的Perl編程語言,很容易學習。

正則表達式是一個字符的特殊序列,可以幫助您匹配或查找其他字符串或字符串集,使用的模式舉行了專門的語法。它們可以被用於搜索,編輯或處理文本和數據。

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

  • Pattern 類: Pattern對象是一個正則表達式的編譯表示。 Pattern類不提供公共構造函數。要創建一個模式,必須首先調用其公共靜態編譯的方法之一,這將返回一個Pattern對象。這些方法接受一個正則表達式作為第一個參數。

  • Matcher 類: Matcher對象是解釋模式,並執行對輸入字符串匹配操作的引擎。像Pattern類,匹配器定義冇有公共的構造函數。通過調用一個Pattern對象的匹配方法獲得一個Matcher對象。

  • PatternSyntaxException: PatternSyntaxException對象是一個未經檢查的異常,表明正則表達式模式中的語法錯誤.

捕獲組:

捕獲組是一種方法處理多種字符作為一個單一的單元。他們被放置到一組括號內分組字符創建。例如,正則表達式(dog)創建一個包含字母"d", "o" 和  "g" 的一個組。 .

捕獲組是由左至右計數的左括號的編號。例如,表達式((A)(B(C)))有四個這樣的組:

  • ((A)(B(C)))

  • (A)

  • (B(C))

  • (C)

要找出有多少組出現在表達式,調用一個匹配對象的groupCount方法。groupCount方法返回一個int表示目前在匹配器模式的捕獲組數.

還有一個特彆的組,組0,它始終代表整個表達式。此組中不包括所報告groupCount的總和。

例子:

下麵的例子說明如何找到從給定的字母數字字符串,一個數字串:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches
{
    public static void main( String args[] ){

      // String to be scanned to find the pattern.
      String line = "This order was placed for QT3000! OK?";
      String pattern = "(.*)(\d+)(.*)";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}

這將產生以下結果:

Found value: This order was placed for QT3000! OK?
Found value: This order was placed for QT300
Found value: 0

正則表達式語法

這裡的表中列出了所有的正則表達式元字符,並可在Java中的語法:

子表達式 匹配
^ 匹配一行的開始.
$ 匹配一行的結尾.
. 匹配除換行符外的任何單個字符。使用m選項允許它匹配換行符.
[...] 匹配括號中的任何單個字符.
[^...] 匹配非括號中的任何單個字符
A 整個字符串的開頭
z 整個字符串的結尾