正規表示式

2022-08-17 05:42:15 字數 1947 閱讀 6156

選擇

豎直分隔符表示選擇,例如"boy|girl"可以匹配"boy"或者"girl"

數量限定

數量限定除了我們舉例用的*,還有+加號,?問號,如果在乙個模式中不加數量限定符則表示出現一次且僅出現一次:

範圍和優先順序

()圓括號可以用來定義模式字串的範圍和優先順序,這可以簡單的理解為是否將括號內的模式串作為乙個整體。例如,"gr(a|e)y"等價於"gray|grey",(這裡體現了優先順序,豎直分隔符用於選擇a或者e而不是gra和ey),"(grand)?father"匹配father和grandfather(這裡體驗了範圍,?將圓括號內容作為乙個整體匹配)。

語法(部分)

字元描述

\將下乙個字元標記為乙個特殊字元、或乙個原義字元。例如,「n」匹配字元「n」。「\n」匹配乙個換行符。序列「\\」匹配「\」而「\(」則匹配「(」。

^           

匹配輸入字串的開始位置。

$匹配輸入字串的結束位置。

n是乙個非負整數。匹配確定的n次。例如,「o」不能匹配「bob」中的「o」,但是能匹配「food」中的兩個o。

n是乙個非負整數。至少匹配n次。例如,「o」不能匹配「bob」中的「o」,但能匹配「foooood」中的所有o。「o」等價於「o+」。「o」則等價於「o*」。

m和n均為非負整數,其中n<=m。最少匹配n次且最多匹配m次。例如,「o」將匹配「fooooood」中的前三個o。「o」等價於「o?」。請注意在逗號和兩個數之間不能有空格。

*匹配前面的子表示式零次或多次。例如,zo*能匹配「z」、「zo」以及「zoo」。*等價於。

+匹配前面的子表示式一次或多次。例如,「zo+」能匹配「zo」以及「zoo」,但不能匹配「z」。+等價於。

?匹配前面的子表示式零次或一次。例如,「do(es)?」可以匹配「do」或「does」中的「do」。?等價於。

?當該字元緊跟在任何乙個其他限制符(*,+,?,,,)後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜尋的字串,而預設的貪婪模式則盡可能多的匹配所搜尋的字串。例如,對於字串「oooo」,「o+?」將匹配單個「o」,而「o+」將匹配所有「o」。

.匹配除「\n」之外的任何單個字元。要匹配包括「\n」在內的任何字元,請使用像「(.|\n)」的模式。

(pattern) 

匹配pattern並獲取這一匹配的子字串。該子字串用於向後引用。要匹配圓括號字元,請使用「\(」或「\)」。

x|y匹配x或y。例如,「z|food」能匹配「z」或「food」。「(z|f)ood」則匹配「zood」或「food」。

[xyz]       

字元集合(character class)。匹配所包含的任意乙個字元。例如,「[abc]」可以匹配「plain」中的「a」。其中特殊字元僅有反斜線\保持特殊含義,用於轉義字元。其它特殊字元如星號、加號、各種括號等均作為普通字元。脫字元^如果出現在首位則表示負值字元集合;如果出現在字串中間就僅作為普通字元。連字元-如果出現在字串中間表示字元範圍描述;如果如果出現在首位則僅作為普通字元。

[^xyz]

排除型(negate)字元集合。匹配未列出的任意字元。例如,「[^abc]」可以匹配「plain」中的「plin」。

[a-z]

字元範圍。匹配指定範圍內的任意字元。例如,「[a-z]」可以匹配「a」到「z」範圍內的任意小寫字母字元。

[^a-z]

排除型的字元範圍。匹配任何不在指定範圍內的任意字元。例如,「[^a-z]」可以匹配任何不在「a」到「z」範圍內的任意字元。

優先順序優先順序為從上到下從左到右,依次降低:

運算子說明

\轉義符

(), (?:), (?=),

括號和中括號

*、+、?、、、

限定符^、$、\任何元字元

定位點和序列|選擇

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

非負整數 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正規表示式 編寫正規表示式

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