正規表示式(RegEx) 快速參考

2021-08-20 14:10:02 字數 3823 閱讀 4748

正規表示式(regex)——快速參考

基礎知識

在任意位置進行匹配: 預設情況下, 正規表示式可以匹配被搜尋字串的 任意位置 的子字串. 例如, 正規表示式 abc 可以匹配 abc123, 123abc 以及 123abcxyz. 要限制在開始或末尾進行匹配, 請使用 錨.

轉義字元: 大多數字元 (例如 abc123) 可以直接使用在正規表示式中. 然而, .*?+[

匹配出現次數介於 min 和 max 的前面的字元, 字元類 或 子模式. 例如, a 可以匹配 ab 但只匹配 aaab 中的前兩個 a.

此外, 表示準確匹配 3 次, 而 則表示匹配 3 次或更多. 注: 指定的數字必須小於 65536, 且第乙個必須小於等於第二個.

[…]

字元類: 方括號把一列字元或乙個範圍括在了一起 (或兩者). 例如, [abc] 表示 「a, b 或 c 的中任何乙個字元」. 使用破折號來建立範圍; 例如, [a-z] 表示 「在小寫字母 a 和 z (包含的) 之間的任何乙個字元」. 列表和範圍可以組合在一起; 例如 [a-za-z0-9_] 表示 「字母, 數字或下劃線中的任何乙個字元」.

字元類後面可以使用 *, ?, + 或 進行限定. 例如, [0-9]+ 匹配乙個或多個任意數字; 因此它可以匹配 xyz123 但不會匹配 abcxyz.

通過 [[:***:]] 還支援下列 posix 命名集, 其中 *** 是下列單詞的其中乙個: alnum, alpha, ascii (0-127), blank (space 或 tab), cntrl (控制字元), digit (0-9), xdigit (十六進製制數), print, graph (排除了空格的列印字元), punct, lower, upper, space (空白), word (等同於 \w).

在字元類中, 只有在類中具有特殊含義的字元才需要進行轉義; 例如 [\^a], [a-b], [a]] 和 [\a].

[^…] 匹配 不 在類中的任何乙個字元. 例如, [^/]* 匹配零個或多個 不是 正斜槓的任意字元, 例如 http://. 同樣地, [^0-9xyz] 匹配既不是數字也不是 x, y 或 z 的任何乙個字元.

\d 匹配任意乙個數字 (相當於類 [0-9]). 相反地,大寫的\d表示「任意的非數字字元」。這個和下面的兩個都可以用在 字元類 中; 例如, [\d.-] 表示 「任何數字, 句點或負號」.

\s 匹配任意單個空白字元 , 主要是空格, tab 和新行符 (r 和n). 相反地, 大寫的 \s 表示 「任何 非空白字元」.

\w 匹配任何單個 「單詞」 字元, 即字母, 數字或下劃線. 這等同於 [a-za-z0-9_]. 相反地, 大寫的 \w 表示 「任何 非單詞字元」. ^ 抑

揚符()

和美元符

( 抑揚符

()和美

元符

() 被稱為 錨, 因為它們不消耗任何字元; 相反地, 它們把模式限定在被搜尋字串的開始或末尾進行匹配.

在模式的開始處使用 ^ 表示需要在行的開始處進行匹配. 例如, ^abc 可以匹配 abc123 但不匹配 123abc.

在模式的末尾處使用 表示

需要在行

的末端進

行匹配.

例如,a

bc表 示需

要在行的

末端進行

匹配.例

如,ab

c可以匹配 123abc 但不能匹配 abc123.

這兩個錨還可以組合使用. 例如, ^abc$ 僅匹配 abc (即在它的前面或後面不能有另外的字元).

如果被搜尋的文字包含多行, 則可以使用 「m」 選項 讓錨應用於每行而不是把所有文字作為整體. 例如, m)^abc$ 可以匹配 123rnabcrn789. 但如果沒有 「m」 選項, 則不會形成匹配.

\b \b 表示 「單詞邊界」, 它類似錨, 因為它不消耗任何字元. 它要求當前字元的 狀態為單詞字元 (\w), 與前乙個字元的狀態相反. 它通常用來避免意外地匹配到在其他單詞內的某個單詞. 例如, \bcat\b 不會匹配 catfish, 但它可以匹配不論周圍是否有標點或空白的 cat. 大寫的 \b 則相反: 它要求當前字元 不是 單詞的邊界.

| 豎線將兩個或多個可選專案分隔開來. 如果可選專案中 任何乙個 滿足條件, 則會形成匹配. 例如, gray|grey 既可以匹配 gray 也可以匹配 grey. 同樣地, 模式 gr(a|e)y 中通過下面描述的括號的幫助可以實現同樣的作用.

(…)

括在括號中的專案常用於:

確定求值的順序. 例如, (sun|mon|tues|wednes|thurs|fri|satur)day 可以匹配任何一天的名稱.

把 *, ?, + 或 應用到 系列 字元而不只是單個字元. 例如, (abc)+ 匹配乙個或一串字串 「abc」; 因此它可以匹配 abcabc123 但不會匹配 ab123 或 bc123.

捕獲子模式, 例如 abc(.)xyz 中的句點星號. 例如, regexmatch() 會把匹配每個子模式的子字串儲存到 輸出陣列. 同樣地, regexreplace() 中允許把匹配每個子模式的子字串通過像 $1 這樣的 後向引用 重新插入到替換結果中. 要使用不捕獲子模式的括號, 請把括號內的開始兩個字元指定為 ?:; 例如: (?:.)

在匹配過程中改變 選項. 例如, (?im) 會為模式的後續部分開啟不區分大小寫和多行選項 (如果它在子模式中則它會改變子模式的選項). 相反地, (?-im) 會關閉它們. 支援除 dpsrna 外的所有選項.

\t \r

等等.

這些轉義序列表示特殊的字元. 最常見的有 \t (tab), \r (回車) 和 \n (換行). 在 autohotkey, 在這些情況中還可以使用重音符 () 代替反斜線. 還支援 \xhh 格式的轉義序列, 其中 hh 是介於 00 和 ff 之間的任意 ansi 字元的十六進製製碼.

在 v1.0.46.06+, \r 表示 「單個任意型別的新行符」, 即在 `a 選項 中列出的這些 (然而, \r 在 字元類 中僅僅表示字母 「r」). 在 v1.0.47.05+, \r 可以被限制為 cr, lf 和 crlf 三種, 只需要在模式的開始處 (選項後面) 指定大寫的 (*bsr_anycrlf) ; 例如 im)(*bsr_anycrlf)abc\rxyz

\p \p

\x [ahk_l 61+]: unicode 字元屬性. 在 ansi 版本中不支援. \p 匹配帶 xx 屬性的字元而 \p 匹配 不帶 xx 屬性的任意乙個字元. 例如, \pl 匹配任意乙個字母而 \p 匹配任意乙個大寫字母. \x 匹配組成擴充套件 unicode 序列的任何數目的字元.

對於受支援的屬性名稱的完整列表和其他細節, 請在 www.pcre.org/pcre.txt 中搜尋 「\p」.

(*ucp)

[ahk_l 61+]: 考慮到效能, \d, \d, \s, \s, \w, \w, \b 和 \b 預設情況下只識別 ascii 字元, 即使在 unicode 版本中也是如此. 如果模式以 (*ucp) 開頭, 則會使用 unicode 屬性來判斷哪個字元匹配. 例如, \w 變成相當於 [\p\p_] 而 \d 變成等同於 \p.

貪婪:預設情況下,*、?、+ 和 是貪婪的,因為它們消耗到最後乙個能滿足整個模式的可能的所有字元。要讓它們停在 首個 可能的字元, 請在它們後面加上問號. 例如, 模式 <.+> (其中沒有問號) 表示: 「搜尋乙個 <, 接著乙個或多個任意字元, 然後是乙個 >」. 要在匹配 整個 字串 text 時停止, 請在加號後加上問號: <.+?>. 這樣會讓匹配在第乙個 『>』 處停止, 因此它只匹配第乙個標籤 .

**和回顧斷言:這組 (?=…)、(?!…)、(?<=…) 和 (?

正規表示式regex

正規表示式 regular expression 是乙個字串,表示一定的規則 api文件的pattern類中有其具體的規則定義 注意 regex嚴格區分大小寫 package cn.itcast.demo02 public class regexdemo02 檢驗郵箱位址是否合法 規則 123456...

RegEx正規表示式

eg select prod name from products where prod name regexp 000 描述了乙個規則,通過這個規則可以匹配一類字串平台雲 字母 數字 漢字 下劃線 以及沒有特殊定義的標點符號,都是 普通字元 能夠與多種字元匹配的表示式 注意區分大小寫,大寫是相反的...

Regex正規表示式學習

1.檔名查詢常用的兩通配付是 其中 任意,代表乙個字元,舉例匹配.txt檔案 txt,匹配擴充套件是3字元 2.正規表示式中 和 匹配任意字元用 匹配乙個支付 舉例匹配.txt檔案 txt 其中 需要用 進行轉義,匹配副檔名是3字元 3.正規表示式的分類,可以按照是否大小寫,是否標點符號,是否數字進...