. 匹配除了換行符以外的任何字元
\w 匹配字母或數字或下劃線或漢字
\s 匹配任意的空白符
\d 匹配數字
\b 匹配單詞的開始或結束
^ 匹配字串的開始
$ 匹配字串的結束
"." : 匹配除了換行符以外的任何字元,
算是"\w"的加強版了"\w"不能匹配 空格 如果把字串加上空格用"\w"就受限了,看下用 "." 如何匹配字元"b hj 4 5 d__ac" 正則:".+"
"\w":匹配字母、數字、下劃線,
例如我要匹配"pcd_45f" 正則:"\w+" 這裡的"+"字元為乙個量詞指重複的次數
"\s": 匹配空格,
例如字元 "a b c" 正則:"\w\s\w\s\w" 乙個字元後跟乙個空格
"\d": 匹配數字,例如要匹配乙個固定格式的**號碼以0開頭前4位後7位,如0737-5686123 正則:^0(\d)-(\d)$
"\b":不會消耗任何字元只匹配乙個位置,常用於匹配單詞邊界,如從字串中"this is regex"匹配單獨的單詞 "is" 正則就要寫成
"\bis\b"
"^" :匹配輸入字串的開始位置
"$": 匹配輸入字串的結尾位置
元字元^(和數字6在同乙個鍵位上的符號)和$都匹配乙個位置,這和\b有點類似。^匹配你要用來查詢的字串的開頭,$匹配結尾。這兩個**在驗證輸入的內容時非常有用,比如乙個**如果要求你填寫的qq號必須為5位到12位數字時,可以使用:^\d$。
\w 匹配任意不是字母,數字,下劃線,漢字的字元
\s 匹配任意非數字的字元
\d 匹配任意的空白符
\b 匹配不是單詞開頭或結束的位置
[^x] 匹配除了x以外的任意字元
* 重複零次或更多次
+ 重複一次或更多次
? 重複零次或一次
重複n次
重複n次或更多次
重複n到m次
先解釋關於量詞所涉及到的重要的三個概念
1.貪婪(貪心) 如"*"字元 貪婪量詞會首先匹配整個字串,嘗試匹配時,它會選定盡可能多的內容,如果 失敗則回退乙個字元,然後再次嘗試回退的過 程就叫做回溯,它會每次回退乙個字元,直到找到匹配的內容或者沒有字元可以回退。相比下面兩種貪婪量詞對資源的消耗是最大的
2.懶惰(勉強) 如 "?" 懶惰量詞使用另一種方式匹配,它從目標的起始位置開始嘗試匹配,每次檢查乙個字元,並尋找它要匹配的內容,如此迴圈直到 字元結尾處
3.占有 如"+" 占有量詞會覆蓋事個目標字串,然後嘗試尋找匹配內容 ,但它只嘗試一次,不會回溯,就好比先抓一把石頭,然後從石頭中挑出**
"*"(貪婪) 重複零次或更多,例如"aaaaaaaa" 匹配字串中所有的a 正則: "a*" 會出到所有的字元"a"
"+"(占有) 重複一次或更多次
例如"aaaaaaaa" 匹配字串中所有的a 正則: "a+" 會取到字元中所有的a字元, "a+"與"a*"不同在於"+"至少是一次而"*" 可以是0次
"?"(懶惰) 重複零次或一次
例如"aaaaaaaa" 匹配字串中的a 正則 : "a?" 只會匹配一次,也就是結果只是單個字元a
"" 重複n次
例如從"aaaaaaaa" 匹配字串的a 並重複3次 正則: "a" 結果就是取到3個a字元 "aaa";
"" 重複n到m次
例如正則 "a" 將a重複匹配3次或者4次 所以供匹配的字元可以是三個"aaa"也可以是四個"aaaa" 正則都可以匹配到
"" 重複n次或更多次
與不同之處就在於匹配的次數將沒有上限,但至少要重複n次 如 正則"a" a至少要重複3次
把量詞了解了之後匹配乙個固定格式的**號碼以0開頭前4位後7位正則:^0\d-\d$
"*?" 重複任意次,但盡可能少重複 , 如 "acbacb" 正則 "a.*?b" 只會取到第乙個"acb" 原本可以全部取到但加了限定符後,只會匹配盡可能少的字元 ,而"acbacb"最少字元的結 果就是"acb" "+?" 重複1次或更多次,但盡可能少重複, 與上面一樣,只是至少要重複1次, "??" 重複0次或1次,但盡可能少重複, 如 "aaacb" 正則 "a.??b" 只會取到最後的三個字元"acb" "?" 重複n到m次,但盡可能少重複, 如 "aaaaaaaa" 正則 "a?" 因為最少是0次所以取到結果為空 "?" 重複n次以上,但盡可能少重複,如 "aaaaaaa" 正則 "a?" 最少是1次所以取到結果為 "a"先了解在正則中捕獲分組的概念,其實就是乙個括號內的內容 如 "(\d)\d" 而"(\d)" 這就是乙個捕獲分組,可以對捕獲分組進行 後向引用 (如果後而有相同的內容則可以直接引用前面定義的捕獲組,以簡化表示式) 如(\d)\d\1 這裡的"\1"就是對"(\d)"的後向引用
如 "zery zery" 正則 \b(\w+)\b\s\1\b 所以這裡的"\1"所捕獲到的字元也是 與(\w+)一樣的"zery",為了讓組名更有意義,組名可以自定義名字
"\b(?\w+)\b\s\k\b" 用"?"就可以自定義組名了而要後向引用組時要記得寫成 "\k";自定義組名後,捕獲組中匹配到的值就會儲存在定義的組名裡
下面列出捕獲分組常有的用法
"(exp)" 匹配exp,並捕獲文字到自動命名的組裡
"(?exp)" 匹配exp,並捕獲文字到名稱為name的組裡
"(?:exp)" 匹配exp,不捕獲匹配的文字,也不給此分組分配組號
"(?=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位數字後非數字的結果
"(?
正規表示式快速入門
你是不是經常忘記正規表示式中的語法規則 優先順序順序 界定符 定位符等等,每次看了忘忘了看,怎麼辦的,多練習或者小抄本記起來!1 常用元字元 匹配處換行符以外的任意字元 w匹配字母或數字或下劃線或漢字 s匹配任意的空白符 d匹配數字 b匹配單詞的開始或結束 匹配字串的開始 匹配字串的結束 2 常用限...
正規表示式快速入門
一 元字元 w,s,b,d 1.後面四個有相應的大寫,表反義。匹配行開頭,只有當其在 中表示 非 2.b 匹配單詞的開始或結束,而 匹配除換行符外的任意字元。eg 匹配乙個非空行 bstr 匹配 str開頭的字串 二 重複 請叫上面四位為 四大金剛 0個或多個 個或多個 個或 個 有三種寫法,和 不...
快速入門正規表示式
本文是一篇正則的快速入門教程,並未涉及分組 反義 後向引用 貪婪懶惰等高階內容,旨在可以快速學會如何去理解那些常見的正規表示式 一 前言 1.1 何為正規表示式 正規表示式,又稱規則表示式。英語 regular expression,在 中常簡寫為regex regexp或re 電腦科學的乙個概念。...