Java 中的正規表示式特殊字元
Rupam Yadav
2023年10月12日
Regex(正規表示式)是用於操作、搜尋和處理文字字串的有用工具。它簡化並減少了程式中的行數。
我們將看看如何在正規表示式中使用特殊字元。
Java 正規表示式中的特殊字元
正規表示式是一種表示文字匹配模式的文字語法。正規表示式使用特殊字元,例如 .
、+
、*
、?
、^
、$
、(
、)
、[
、]
、{
、}
、|
、\
。
正規表示式中的字元(字串中表示其模式的字元)要麼是具有特殊含義的元字元,要麼是具有字面含義的常規字元。
元字元 | 用途 | 例子 |
---|---|---|
^ |
字串或否定符號的開頭 | ^a 匹配字串開頭的 a |
. |
匹配除換行符以外的任何單個字元 | a.[0-9] 匹配 a 字串,該字串具有 a 後跟一個字元和一個數字 |
[] |
匹配括號中包含的單個字元的括號表示式 | [a-c] 等於 a 或 b 或 c , 即 a|b|c 也 [abc] |
[^] |
匹配未包含在括號中的單個字元 | [^abc] 匹配除 a 、b 或 c 以外的任何字元 |
$ |
隊伍的盡頭 | ^abc$ 匹配以 abc 開頭和結尾的字串 |
() |
分組字元 | (ab)\1 匹配 abab |
* |
匹配前面的元素或零次或多次 | ab*c 匹配 ac 、abc 、abbbc 等。 |
{m,n} |
匹配前面的元素至少 m 次且不超過 n 次 | a{3,5} 匹配 aaa , aaaa , aaaaa |
? |
匹配前面的元素零次或一次 | ab?c 匹配 ac , abc |
+ |
匹配前面的元素一次或多次 | ab+c 匹配 abc 、abbc 、abbbc 等,但不匹配 ac |
| |
選擇運算子,它匹配運算子 `\ 之前的表示式或之後的表示式 | ` |
\ |
轉義或反斜槓 | 常見的轉義序列,如 \n 或換行符,\t 用於製表符 |
在 Java 中使用正規表示式特殊字元的示例
在這個例子中,我們使用了 java.util.regex
包中的 Pattern
和 Matcher
類。Pattern
類表示正規表示式。
當我們建立 Pattern
類的例項時,我們將正規表示式作為字串傳遞。
這裡我們有一個正規表示式 regex_pattern
作為字串。此模式用於檢查密碼是否符合以下條件。
- 密碼中必須包含至少一位
[0-9]
。 - 密碼中至少需要一個小寫字元
[a-z]
。 - 密碼中至少需要一個大寫字元
[A-Z]
。 - 至少一個特殊字元,如
! @ # & ()
,必須包含在密碼中。 - 密碼長度必須至少為 8 個字元且不超過 24 個字元。
compile()
方法從指定的正規表示式建立一個模式。稍後我們將使用此模式製作一個 Matcher
物件。
該模式可以使用 Matcher
物件與正規表示式的任何字元序列匹配。matcher
方法建立一個匹配器,將給定的輸入與模式匹配。
我們將兩個字串與模式匹配並列印輸出(matches()
方法返回的布林值)。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RegexTest {
public static void main(String[] args) {
String regex_pattern =
"^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#&()–[{}]:;',?/*~$^+=<>]).{8,24}$";
Pattern pattern = Pattern.compile(regex_pattern);
String inputPassword1 = "Password1@@1990";
String inputPassword2 = "Pass190";
Matcher matcher1 = pattern.matcher(inputPassword1);
Matcher matcher2 = pattern.matcher(inputPassword2);
System.out.println("Password 1 matches pattern : " + matcher1.matches());
System.out.println("Password 2 matches pattern : " + matcher2.matches());
}
}
輸出:
Password 1 matches pattern : true
Password 2 matches pattern : false
作者: Rupam Yadav
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn