正規表示式的基本規則

2022-06-05 06:06:10 字數 2264 閱讀 4326

什麼是正規表示式

是一套規則,是用來匹配字串的規則

能做什麼

1、檢測乙個輸入的字串是否合法

能夠提高程式的效率並且減輕伺服器的壓力

2、從乙個大檔案中找到所有符合規則的內容

能夠高效的從乙個答斷文字中快速找到符合規則的內容

正則規則

所有的規則中的字元就可以就剛好匹配到字串中的內容

字元組 描述的是乙個位置上能出現的所有可能性

接受範圍,可以描述多個範圍,連著寫就可以了

乙個中括號只表示乙個字元位置

[abc] 匹配a 或 b 或 c

[0-9] 根據ascii進行範圍的比對的,

[a-z] 小寫字母

[a-z] 大寫字母

[a-za-z] 大小寫字母

[0-9a-z] 數字和所有的小寫字母

[0-9a-za-z] 數字和所有的大小寫字母

[0-9] --> \d 表示匹配任意一位數字  digit

[0-9a-za-z] ---> \w 表示任意乙個字母、數字或下劃線

匹配空白符(空格\tab\enter) ---> 空格, \t ,\n  ---> \s匹配所有的空白符

在正規表示式中能夠幫助我們表示匹配的內容的符號都是正則中的元字元

元字元 -- 匹配內容的規則

\d\w

\s\t

\n\w  非字母數字下劃線  取反

\d  非數字

\s  非空白符

[\d\d] [\w\w] [\s\s]  匹配所有

. 表示匹配所有除換行符的所有

[^] 表示非字元組

[^\d] 匹配所有的非數字   [^1] 非1   [^zxc]匹配除了字元組(zxc)中字元的所有字元

^ 匹配乙個字串的開始

$ 匹配乙個字串的結尾   a.$   匹配以a開始以任意字元結尾的字串

^和$ 約束了內容和位數

()  分組,www\.(baidu|taobao|jd)\.com   約束或描述的內容的範圍問題

a表示式|b表示式  ad|bc     匹配a或b表示式中的內容,如果匹配a成功了,不會繼續和b匹配

所以,如果規則有重疊部分,總是把長的放在左邊

\. 轉義成 .

記憶元字元  : 都是表示能匹配哪些內容,乙個元字元總是能表示乙個字元位置上的內容

\d \w \s \d \w \s \n \t

[^] .

^ $| ()

量詞 : 必須跟在元字元的後面,只能約束前面乙個元字元

表示匹配n次

表示匹配至少n次

表示至少匹配n次,至多m次

? 表示匹配0次或1次  

+ 表示一次或多次    

* 表示0次或1次或多次

匹配0次

整數 \d+ 表示匹配整數

\d+\.\d+  小數

\d+\.?\d* 小數或整數 分組的作用: \d+(\.\d+)?

手機號: 1 3-9 11位  1[3-9]\d

判斷使用者輸入的內容是否合法,如果使用者輸入的對就能查到結果,如果輸入的不對就不能查到結果。

^1[3-9]\d$

從乙個大檔案中找到所有符合規則的內容

[^\d]1[3-9]\d[^\d]

正規表示式的貪婪匹配

在量詞允許的情況下,盡量按照最多的匹配

.*x  表示匹配任意字元,任意多次數,遇到最後的x就停下來

回溯演算法

非貪婪(惰性)匹配

\d?6  最少三個數字, 遇到第乙個6停止匹配

元字元 量詞 ?  ?盡量少匹配

.*?x  表示匹配任意字元,任意多次數,但是一旦遇到x就停下來

轉義符原本有特殊意義的字元,到了表達他本身意義的時候,需要轉義

有一些有特殊意義的內容,放在字元組中,會取消他的特殊意義  [.] 表示.  [()] 表示 () 還有 * | ?   [().*+?]

[a\-c] - 在字元組中表示範圍,如果不希望他表示範圍,需要轉義,或者放在字元組的最前面\最後面

- 放在字元組[a-z]裡表示範圍, 不放在字元組裡或[-a]表示本身  [a\-c]  表示匹配a 或- 或c

18位的身份證號

[1-9]\d([0-9]|x)|[1-9]\d

[1-9]\d[\dx]|[1-9]\d

[1-9]\d(\d[\dx])?

"^(?=.*?[a-z])(?=.*?[a-z])(?=.*?[0-9])[0-9a-za-z]$"    8-20位含數字大小寫字母的密碼

基本正規表示式規則

一 特殊字元 eg bhi b.blucy b 這個意思是以hi開頭的以lucy結尾的不換行的字元 1.b 這個叫元字元,代表單詞的開頭或結尾,即單詞的分界處,只是乙個位置 2.這個叫元字元,匹配 除 換行符外的任意字元 3.1 也是元字元,不代表任何字元,而是指代數量,意味著其前面的內容可以重複數...

正規表示式基本規則

正則 解釋 r 回車 n 換行 t 製表符 d 任意乙個數字,0 9 中的任意乙個 w任意乙個字母或數字或下劃線,也就是 a z,a z,0 9,中任意乙個 s包括空格 製表符 換頁符等空白字元的其中任意乙個 小數點可以匹配除了換行符 n 以外的任意乙個字元 a.d 匹配 aaa100 得到 aa1...

正規表示式基本規則

把上面的規則連線起來,就獲得了完整的正規表示式。a za z0 9 a za z com org edu net 2 正規表示式常用符號 3 簡單示例 a 注意 中的正規表示式 coding utf 8 author jiajiknag 待抓取的網頁是 from urllib.request imp...