目錄
一. 匹配字符
.:匹配除換行符外的任意單個字符。
二. 位置錨點
^:匹配輸入字符串的開始位置。
$:匹配輸入字符串的結束位置。
\b:匹配單詞邊界。
\B:匹配非單詞邊界。
三. 重復限定符
*:匹配前面的字符或子表達式零次或多次(貪婪模式)。
+:匹配前面的字符或子表達式一次或多次(貪婪模式)。
?:匹配前面的字符或子表達式零次或一次(懶惰模式)。
{n}:匹配前面的字符或子表達式恰好n次。
{n,}:匹配前面的字符或子表達式至少n次。
{n,m}:匹配前面的字符或子表達式至少n次,但不超過m次。
四. 分支條件
|:邏輯“或”,匹配兩個或多個選項中的一個。
五. 字符類
[abc]:匹配方括號內的任意一個字符。
[^abc]:匹配不在方括號內的任意一個字符。
\d:匹配任何數字字符。
\D:匹配任何非數字字符。
\s:匹配任何空白字符。
\S:匹配任何非空白字符。
\w:匹配任何字母數字字符及下劃線。
\W:匹配任何非字母數字字符及非下劃線。
六. 轉義字符
\:轉義字符,用于匹配元字符本身或特殊序列。
七. 特殊序列
\t:匹配制表符(Tab)。
\n:匹配換行符。
\r:匹配回車符。
\f:匹配換頁符。
\v:匹配垂直制表符。
八. 分組和引用
():創建捕獲組,用于分組和提取匹配的文本。
(?:...):創建非捕獲組,用于分組但不捕獲匹配的文本。
\數字:后向引用,引用之前捕獲組匹配的文本。配合捕獲組使用
九. 斷言
(?=...):正向先行斷言,匹配后面跟著特定模式的字符串。
(?!...):負向先行斷言,匹配后面不跟著特定模式的字符串。
(?<=...):正向后行斷言,匹配前面有特定模式的字符串。
(?
十. Unicode 和其他屬性
十一. 遞歸
十二.重復模式
????????正則表達式(Regular Expression,簡稱Regex)是一種用于字符串搜索和操作的強大工具,它使用單個字符串來描述、匹配一系列符合某個句法規則的字符串。它是一套獨立的規范,各類編程語言都會提供一些API,支持正則表達式。正則表達式由普通字符(例如,a-z、A-Z、0-9)和特殊字符(稱為“元字符”)組成。以下是一些常用的元字符及其含義:
當然,以下是正則表達式元字符和特性的分類,每個都附有一個簡單的案例和清晰的輸出格式說明:
一. 匹配字符
.
:匹配除換行符外的任意單個字符。
示例:
a.t
匹配 "act"、"a1t" 或 "a!t"。
二. 位置錨點
^
:匹配輸入字符串的開始位置。
示例:
^Hello
匹配以 "Hello" 開頭的句子。
-
$
:匹配輸入字符串的結束位置。
示例:
World$
匹配以 "World" 結尾的句子。
\b
:匹配單詞邊界。
示例:
\bworld
? 這個正則表達式匹配的是 "world" 作為一個完整單詞出現的情況
-
\B
:匹配非單詞邊界。
示例:
\Bworld \B
匹配 "helloworld" 中的 "world"。
三. 重復限定符
*
:匹配前面的字符或子表達式零次或多次(貪婪模式)。
示例:
a*
匹配 "a"、"aa" 或 "aaa"。
+
:匹配前面的字符或子表達式一次或多次(貪婪模式)。
示例:
a+
匹配 "a"、"aa" 或 "aaa",但不匹配空字符串。
?
:匹配前面的字符或子表達式零次或一次(懶惰模式)。
示例:
a?
匹配 "a" 或空字符串。
{n}
:匹配前面的字符或子表達式恰好n次。
示例:
a{3}
匹配 "aaa"。
{n,}
:匹配前面的字符或子表達式至少n次。
示例:
a{3,}
匹配 "aaa"、"aaaa" 或 "aaaaa"。
{n,m}
:匹配前面的字符或子表達式至少n次,但不超過m次。
示例:
a{2,3}
匹配 "aa" 或 "aaa"。
四. 分支條件
|
:邏輯“或”,匹配兩個或多個選項中的一個。
示例:
cat|dog
匹配 "I have a cat" 或 "I have a dog"。
五. 字符類
[abc]
:匹配方括號內的任意一個字符。
示例:
[abc]
匹配 "a"、"b" 或 "c"。
[^abc]
:匹配不在方括號內的任意一個字符。
示例:
[^abc]
匹配 "d"、"e" 或 "f"。
\d
:匹配任何數字字符。
示例:
\d
匹配 "1"、"2" 或 "3"。
\D
:匹配任何非數字字符。
示例:
\D
匹配 "a"、"b" 或 "c"。
\s
:匹配任何空白字符。
示例:
\s
匹配空格、制表符或換行符。
\S
:匹配任何非空白字符。
示例:
\S
匹配 英文字母。
-
\w
:匹配任何字母數字字符及下劃線。
示例:
\w
匹配 "a"、"1" 或 "_"。
-
\W
:匹配任何非字母數字字符及非下劃線。
示例:
\W
匹配空格或 "!"。
六. 轉義字符
\
:轉義字符,用于匹配元字符本身或特殊序列。
示例:
\.
匹配實際的點字符。
七. 特殊序列
\t
:匹配制表符(Tab)。
示例:
\t
匹配制表符。
\n
:匹配換行符。
示例:
\n
匹配換行符。
\r
:匹配回車符。
示例:
\r
匹配回車符。(回車符:將光標移回行首,不換行。換行符:將光標移至下一行開頭,換行。)Windows回車換行符都是enter鍵,單獨敲出太麻煩,算了
\f
:匹配換頁符。
示例:
\f
匹配換頁符。通常用于打印機或文本處理軟件中,以指示開始新的一頁。在大多數文本編輯器或命令行界面中,換頁符不是通過鍵盤直接輸入的。沒法演示。
\v
:匹配垂直制表符。
示例:
\v
匹配垂直制表符。垂直制表符通常不通過鍵盤直接輸入,因為它主要用于老式的電傳打字機和一些特殊的文本處理場景。
八. 分組和引用
()
:創建捕獲組,用于分組和提取匹配的文本。
示例:
(abc)
匹配 "abc" 并捕獲它。
(?:...)
:創建非捕獲組,用于分組但不捕獲匹配的文本。
示例:
(?:abc)
匹配 "abc" 但不捕獲它。說明:在正則表達式中使用它來對子表達式進行分組,但是不捕獲匹配的結果。這意味著匹配到的內容不會像捕獲組那樣被存儲起來,以便后續使用。
\數字
:后向引用,引用之前捕獲組匹配的文本。配合捕獲組使用
示例:
(abc)\1
匹配 "abcabc"。匹配文本abc
出現兩次,并且中間沒有任何其他符號。
九. 斷言
(?=...)
:正向先行斷言,匹配后面跟著特定模式的字符串。
示例:
abc(?=def)
匹配 "abc" 后面跟著 "def"。
(?!...)
:負向先行斷言,匹配后面不跟著特定模式的字符串。
示例:
abc(?!def)
匹配 "abc" 后面不跟著 "def"。
-
(?<=...)
:正向后行斷言,匹配前面有特定模式的字符串。
示例:
(?<=def)abc
匹配 "abc" 前面有 "def"。
(?<!...)
:負向后行斷言,匹配前面沒有特定模式的字符串。
示例:
(?<!def)abc
匹配 "abc" 前面沒有 "def"。
十. Unicode 和其他屬性
-
\p{...}
:匹配具有特定 Unicode 屬性的字符。
示例:
\p{L}
匹配任何字母很多正則表達式引擎不支持 Unicode 屬性轉義或沒有啟用Unicode模式,暫時沒測試。
十一. 遞歸
-
(?R)
:遞歸匹配,正則表達式可以引用自身。
示例:
(?R)
可以遞歸地匹配重復的模式。正則表達式引擎不支持遞歸模式,暫時沒測試。
十二.重復模式
-
貪婪模式:對于重復限定符,默認情況下會匹配盡可能多的字符,這叫做貪婪模式。
-
懶惰模式:在重復限定符之后加上
?
,表示匹配盡可能少的字符,這叫做懶惰模式。