正規表示式

2021-10-04 06:08:49 字數 2969 閱讀 5523

i 執行對大小寫不敏感的匹配。

g 執行全域性匹配(查詢所有匹配而非在找到第乙個匹配後停止)。

m 執行多行匹配。

[abc] 查詢方括號之間的任何字元。

[0-9] 查詢任何從 0 至 9 的數字。

(x|y) 查詢任何以 | 分隔的選項。

1.元字元:

"^":^會匹配行或者字串的起始位置,有時還會匹配整個文件的起始位置。

"$":會匹配行或字串的結尾

"\b":不會消耗任何字元只匹配乙個位置,常用於匹配單詞邊界 如 我想從字串中"this is regex"匹配單獨的單詞 「is」 正則就要寫成 「\bis\b」 \b 不會匹配is 兩邊的字元,但它會識別is 兩邊是否為單詞的邊界

"\d": 匹配數字,例如要匹配乙個固定格式的**號碼以0開頭前4位後7位,如0737-5686123 正則:^0\d\d\d-\d\d\d\d\d\d\d$ 這裡只是為了介紹"\d"字元,實際上有更好的寫法會在 下面介紹。

"\w": 匹配字母,數字,下劃線.例如我要匹配"a2345bcd__ttz" 正則:"\w+" 這裡的"+"字元為乙個量詞指重複的次數。

"\s": 匹配空格,例如字元 「a b c」 正則:"\w\s\w\s\w" 乙個字元後跟乙個空格,如有字元間有多個空格直接把"\s" 寫成 「\s+」 讓空格重複

".":匹配除了換行符以外的任何字元,這個算是"\w"的加強版了"\w"不能匹配 空格 如果把字串加上空格用"\w"就受限了,看下用 「.「是如何匹配字元"a23 4 5 b c d__ttz」 正則:」.+"

"[abc]": 字元組 匹配包含括號內元素的字元

2.反義:大寫就是相反:

「\w」 匹配任意不是字母,數字,下劃線 的字元

「\s」 匹配任意不是空白符的字元

「\d」 匹配任意非數字的字元

「\b」 匹配不是單詞開頭或結束的位置

「[^abc]」 匹配除了abc以外的任意字元

3.量詞:

(1)"*"(貪婪) 重複零次或更多

例如"aaaaaaaa" 匹配字串中所有的a 正則: 「a*」 會出到所有的字元"a"

(2)"+"(懶惰) 重複一次或更多次

例如"aaaaaaaa" 匹配字串中所有的a 正則: 「a+」 會取到字元中所有的a字元, "a+「與"a*「不同在於」+「至少是一次而」*」 可以是0次。

(3)"?"(占有) 重複零次或一次

例如"aaaaaaaa" 匹配字串中的a 正則 : 「a?」 只會匹配一次,也就是結果只是單個字元a

(4)"" 重複n次

例如從"aaaaaaaa" 匹配字串的a 並重複3次 正則: 「a」 結果就是取到3個a字元 「aaa」;

(5)"" 重複n到m次

例如正則 「a」 將a重複匹配3次或者4次 所以供匹配的字元可以是三個"aaa"也可以是四個"aaaa" 正則都可以匹配到

「」 重複n次或更多次

4. 懶惰限定符(加乙個問號)

"*?"重複任意次,但盡可能少重複 ,如 「acbacb」 正則 「a.*?b」 只會取到第乙個"acb" 原本可以全部取到但加了限定符後,只會匹配盡可能少的字元 ,而"acbacb"最少字元的結果就是"acb"

"+?"重複1次或更多次,但盡可能少重複,與上面一樣,只是至少要重複1次

"??"重複0次或1次,但盡可能少重複,如 「aaacb」 正則 「a.??b」 只會取到最後的三個字元"acb"

"?"重複n到m次,但盡可能少重複,如 「aaaaaaaa」 正則 「a」 因為最少是0次所以取到結果為空

"?"重複n次以上,但盡可能少重複,如 「aaaaaaa」 正則 「a」 最少是1次所以取到結果為 「a」。

5.捕獲分組

"(exp)"匹配exp,並捕獲文字到自動命名的組裡

"(?exp)"匹配exp,並捕獲文字到名稱為name的組裡

"(?:exp)"匹配exp,不捕獲匹配的文字,也不給此分組分配組號

6.零寬斷言:

"(?=exp)"匹配exp前面的位置;正向先行斷言(正前瞻)

如 「how are you doing」 正則"(?.+(?=ing))" 這裡取ing前所有的字元,並定義了乙個捕獲分組名字為 「txt」 而"txt"這個組裡的值為"how are you do";

"(?<=exp)"匹配exp後面的位置;正向後行斷言(正後顧)

如 「how are you doing」 正則"(?(?<=how).+)" 這裡取"how"之後所有的字元,並定義了乙個捕獲分組名字為 「txt」 而"txt"這個組裡的值為" are you doing";

"(?!exp)"匹配後面跟的不是exp的位置;負向先行斷言(負前瞻)

如 「123abc」 正則 "\d(?!\d)"匹配3位數字後非數字的結果

"(?如 「abc123 " 正則 「(?

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

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

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