1. 程式人生 > 其它 >JAVA每日總結2021.10.14

JAVA每日總結2021.10.14

正則表示式定義了字串的模式。

正則表示式可以用來搜尋、編輯或處理文字。

正則表示式並不僅限於某一種語言,但是在每種語言中有細微的差別。

正則表示式例項

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

.(點號)也是一個正則表示式,它匹配任何一個字元如:"a" 或 "1"。

下表列出了一些正則表示式的例項及描述:

正則表示式描述

this is text

匹配字串 "this is text"

this\s+is\s+text

注意字串中的\s+

匹配單詞 "this" 後面的\s+可以匹配多個空格,之後匹配 is 字串,再之後\s+

匹配多個空格然後再跟上 text 字串。

可以匹配這個例項:this is text

^\d+(\.\d+)?

^ 定義了以什麼開始

\d+ 匹配一個或多個數字

? 設定括號內的選項是可選的

\. 匹配 "."

可以匹配的例項:"5", "1.5" 和 "2.21"。

Java 正則表示式和 Perl 的是最為相似的。

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

  • Pattern 類:

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

  • Matcher 類:

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

  • PatternSyntaxException:

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

以下例項中使用了正則表示式.*runoob.*用於查詢字串中是否包了runoob子串:

例項

import java.util.regex.*; class RegexExample1{ public static void main(String[] args){ String content = "I am noob " + "from runoob.com."; String pattern = ".*runoob.*"; boolean isMatch = Pattern.matches(pattern, content); System.out.println("字串中是否包含了 'runoob' 子字串? " + isMatch); } }

例項輸出結果為:

字串中是否包含了 'runoob' 子字串? true

捕獲組

捕獲組是把多個字元當一個單獨單元進行處理的方法,它通過對括號內的字元分組來建立。

例如,正則表示式 (dog) 建立了單一分組,組裡包含"d","o",和"g"。

捕獲組是通過從左至右計算其開括號來編號。例如,在表示式((A)(B(C))),有四個這樣的組:

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

可以通過呼叫 matcher 物件的 groupCount 方法來查看錶達式有多少個分組。groupCount 方法返回一個 int 值,表示matcher物件當前有多個捕獲組。

還有一個特殊的組(group(0)),它總是代表整個表示式。該組不包括在 groupCount 的返回值中。