Java 正則表示式
什麼是正則表示式?
正則表示式是構成搜尋模式的字元序列。當你在文字中搜索資料時,可以使用此搜尋模式來描述你要搜尋的內容。
正則表示式可以是一個單獨的字元,也可以是更復雜的模式。
正則表示式可用於執行所有型別的文字搜尋和文字替換操作。
Java 沒有內建的正則表示式類,但我們可以匯入 java.util.regex
包來處理正則表示式。該包包含以下類:
Pattern
類 - 定義模式(用於搜尋)Matcher
類 - 用於搜尋模式PatternSyntaxException
類 - 指示正則表示式模式中存在語法錯誤
示例
查詢句子中單詞“w3schools”的任何出現情況
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("w3schools", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher("Visit W3Schools!");
boolean matchFound = matcher.find();
if(matchFound) {
System.out.println("Match found");
} else {
System.out.println("Match not found");
}
}
}
// Outputs Match found
示例解釋
在此示例中,將搜尋句子中的單詞“w3schools”。
首先,使用 Pattern.compile()
方法建立模式。第一個引數表示正在搜尋的模式,第二個引數包含一個標誌,表示搜尋應不區分大小寫。第二個引數是可選的。
使用 matcher()
方法在字串中搜索模式。它返回一個 Matcher 物件,其中包含有關執行的搜尋資訊。
如果字串中找到該模式,find()
方法將返回 true,否則返回 false。
標誌
compile()
方法中的標誌會更改搜尋的執行方式。以下是其中一些:
Pattern.CASE_INSENSITIVE
- 在執行搜尋時將忽略字母的大小寫。Pattern.LITERAL
- 模式中的特殊字元在執行搜尋時不會具有特殊含義,而是被視為普通字元。Pattern.UNICODE_CASE
- 與CASE_INSENSITIVE
標誌一起使用,還可以忽略非英文字母的大小寫。
正則表示式模式
Pattern.compile()
方法的第一個引數是模式。它描述了正在搜尋的內容。
方括號用於查詢一組字元
表示式 | 描述 |
---|---|
[abc] | 在方括號之間查詢一個字元 |
[^abc] | 查詢方括號中未包含的字元 |
[0-9] | 查詢 0 到 9 範圍內的一個數字 |
元字元
元字元是具有特殊含義的字元
元字元 | 描述 |
---|---|
| | 匹配由 | 分隔的任何一個模式,例如:cat|dog|fish |
. | 查詢任意單個字元的例項 |
^ | 匹配字串的開頭,例如:^Hello |
$ | 匹配字串的結尾,例如:World$ |
\d | 查詢數字 |
\s | 查詢空白字元 |
\b | 匹配單詞的開頭,例如:\bWORD,或單詞的結尾,例如:WORD\b |
\uxxxx | 匹配十六進位制數字 xxxx 指定的 Unicode 字元 |
量詞
量詞定義數量
量詞 | 描述 |
---|---|
n+ | 匹配包含至少一個 n 的任何字串 |
n* | 匹配包含零個或多個 n 的任何字串 |
n? | 匹配包含零個或一個 n 的任何字串 |
n{x} | 匹配包含 X 個 n 的序列的任何字串 |
n{x,y} | 匹配包含 X 到 Y 個 n 的序列的任何字串 |
n{x,} | 匹配包含至少 X 個 n 的序列的任何字串 |