正規表示式

2022-07-20 10:09:12 字數 2293 閱讀 8340

元字元描述

.匹配除換行符以外的任意字元。

[ ]字元類,匹配方括號中包含的任意字元。

[^ ]

否定字元類。匹配方括號中不包含的任意字元

*匹配前面的子表示式零次或多次

+匹配前面的子表示式一次或多次

?匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符。

花括號,匹配前面字元至少 n 次,但是不超過 m 次。

(xyz)

字元組,按照確切的順序匹配字元xyz。

|分支結構,匹配符號之前的字元或後面的字元。

\轉義符,它可以還原元字元原來的含義,允許你匹配保留字元[ ] ( ) . * + ? ^ $  |

^匹配行的開始

$匹配行的結束

簡寫描述

.匹配除換行符以外的任意字元

\w匹配所有字母和數字的字元:[a-za-z0-9_]

\w匹配非字母和數字的字元:[^\w]

\d匹配數字:[0-9]

\d匹配非數字:[^\d]

\s匹配空格符:[\t\n\f\r\p]

\s匹配非空格符:[^\s]

後行斷言和先行斷言有時候被稱為斷言,它們是特殊型別的非捕獲組(用於匹配模式,但不包括在匹配列表中)。當我們在一種特定模式之前或者之後有這種模式時,會優先使用斷言。

例如我們想獲取輸入字串$4.44 and $10.88$字元之前的所有數字。我們可以使用這個正規表示式(?<=\$)[0-9\.]*,表示: 獲取$字元之前的所有的數字包含.字元。

以下是正規表示式中使用的斷言:

符號描述

?=正向先行斷言

?!負向先行斷言

?<=

正向後行斷言

?負向後行斷言

正向先行斷言認為第一部分的表示式必須是先行斷言表示式。返回的匹配結果僅包含與第一部分表示式匹配的文字。

要在乙個括號內定義乙個正向先行斷言,在括號中問號和等號是這樣使用的(?=...)。先行斷言表示式寫在括號中的等號後面。

例如正規表示式(t|t)he(?=\sfat),表示: 匹配大寫字母t或小寫字母t,後面跟字母h,後跟字母e

在括號中,我們定義了正向先行斷言,它會引導正規表示式引擎匹配thethe後面跟著fat

"(t|t)he(?=\sfat)" =>thefat cat sat on the mat.
當我們需要從輸入字串中獲取不匹配表示式的內容時,使用負向先行斷言。負向先行斷言的定義跟我們定義的正向先行斷言一樣,

唯一的區別是不是等號=,我們使用否定符號!,例如(?!...)

我們來看看下面的正規表示式(t|t)he(?!\sfat),表示: 從輸入字串中獲取全部the或者the且不匹配fat前面加上乙個空格字元。

"(t|t)he(?!\sfat)" => the fat cat sat onthemat.
正向後行斷言是用於獲取在特定模式之前的所有匹配內容。正向後行斷言表示為(?<=...)。例如正規表示式(?<=(t|t)he\s)(fat|mat),表示: 從輸入字串中獲取在單詞thethe之後的所有fatmat單詞。

"(?<=(t|t)he\s)(fat|mat)" => thefatcat sat on themat.
負向後行斷言是用於獲取不在特定模式之前的所有匹配的內容。負向後行斷言表示為(? the cat sat oncat.標記描述i

不區分大小寫: 將匹配設定為不區分大小寫。

g全域性搜尋: 搜尋整個輸入字串中的所有匹配。

m多行匹配: 會匹配輸入字串每一行。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 號碼 x x x...

Linux正規表示式 編寫正規表示式

為了所有實用化的用途,你可以通過使用程式產生正確的結果。然而,並不意味著程式總是如你所願的那樣正確地工作。多數情況下,如果程式不能產生想要的輸出,可以斷定真正的問題 排除輸入或語法錯誤 在於如何描述想要的東西。換句話說,應該考慮糾正問題的地方是描述想要的結果的表示式。表示式不完整或者公式表示得不正確...