溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

web正則表達(dá)式知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2021-12-21 09:10:16 來源:億速云 閱讀:134 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“web正則表達(dá)式知識(shí)點(diǎn)有哪些”,在日常操作中,相信很多人在web正則表達(dá)式知識(shí)點(diǎn)有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”web正則表達(dá)式知識(shí)點(diǎn)有哪些”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

正則表達(dá)式(regex)的定義

正則表達(dá)式是一套特殊字符和格式組成的對(duì)字符串進(jìn)行運(yùn)算的表達(dá)式,用表達(dá)式對(duì)目標(biāo)字符串從左到右依次匹配,達(dá)成檢索、過濾、摘取的目的。

正則表達(dá)式的功能

  1. 判斷用戶輸入內(nèi)容是否符合要求。

    • 將用戶輸入的內(nèi)容與預(yù)先定義的表達(dá)式比對(duì),若不符合要求則提示用戶重輸。

    • 通過表達(dá)式約束輸入的數(shù)據(jù)可以能夠提高程序效率并減輕服務(wù)器壓力。

    • 常見案例如表單驗(yàn)證等。

  2. 從文件中獲取所有符合表達(dá)式的內(nèi)容。

    • 能夠高效的從大段字符串中快速找到符合表達(dá)式的內(nèi)容。

    • 常見案例如日志分析、爬蟲等。

元字符

  • [ ] 一對(duì)中括號(hào)表示字符組,用來描述一個(gè)字符可匹配的規(guī)則。

  • [^] 非字符組,用來描述一個(gè)字符不可匹配的規(guī)則。

  • \ 在元字符前加\可用來取消元字符的特殊含義。

  • \d 匹配數(shù)字(小寫d)。

  • \D 匹配非數(shù)字(大寫D)。

  • \w 匹配數(shù)字字母下劃線(小寫w)。

  • \W 匹配非數(shù)字字母下劃線(大寫W)。

  • \s 匹配空格、制表符、換行符(小寫s)。

  • \S 匹配非空白符(大寫S)。

  • \t 匹配制表符(小寫t)。

  • \n 匹配換行符(小寫n)。

  • . 匹配除了換行符之外的所有(英文句號(hào).)。

  • [\d\D]、[\w\W]、[\s\S] 匹配所有字符。

  • ^ 匹配整個(gè)字符串的開始,只能寫在開頭,不能寫在中間或后面(在字符組中定義為非的意思)。

  • $ 匹配整個(gè)字符串的結(jié)束,只能寫在結(jié)尾,不能寫在中間或前面。

  • | 或,例如a|b表示匹配a或b的內(nèi)容,若匹配a成功則不會(huì)繼續(xù)匹配b(所以總是把長(zhǎng)的表達(dá)式放前面)。

  • () 分組,約束作用范圍,在python的re模塊中有特殊用處。

  • \b 匹配單詞的開頭或結(jié)尾,例如\bw匹配hello world中的w,o\b匹配hello中的o。

字符組

描述的是一個(gè)位置上能出現(xiàn)的所有可能性(一對(duì)中括號(hào)只表示一個(gè)字符位置)。案例如下:

  • [abc]匹配a或b或c。

  • 范圍匹配,可以描述多個(gè)范圍,連著寫即可。

  • [0-9]匹配數(shù)字0-9,ascii碼48-57可匹配。

  • [A-Z]匹配大寫英文字母A-Z,ascii碼65-90可匹配。

  • [a-z]匹配小寫英文a-z字母,ascii碼97-122可匹配。

  • [a-zA-Z]匹配大小寫字母。若用[A-z]匹配大小寫英文字母還匹配[\]^_`這6個(gè)符號(hào)。

  • [0-9] -> \d 表示匹配數(shù)字 digit。

  • [0-9a-zA-Z_] -> \w 匹配數(shù)字、字母、下劃線 word。

  • 空白符(空格|tab|enter) -> ( |\t|\n) -> \s 表示所有空白符。

量詞

量詞用來約束元字符生效次數(shù),量詞只能約束它前面的一個(gè)單元,可以是字符、字符組或分組。

{n} 表示匹配n次

{n,} 表示匹配最少n次

{n,m} 表示匹配最少n次、最多m次

? 表示匹配0次或1次 {0,1}

+ 表示匹配1次或多次 {1,}

* 表示0次或多次 {0,}

關(guān)于 ? + * 這三個(gè)符號(hào)經(jīng)常會(huì)用到,請(qǐng)參考下圖,務(wù)必要熟記它們的作用域。

web正則表達(dá)式知識(shí)點(diǎn)有哪些

匹配模式(默認(rèn)最大匹配)

  • 最大匹配(又稱貪婪匹配)

在量詞范圍內(nèi)盡可能多的匹配內(nèi)容。例如:.*x表示匹配任意字符任意多次,遇到最后一個(gè)x才停止。

案例

表達(dá)式:\d{3,}6

目標(biāo):1234789135661947678914

結(jié)果:12347891356619476 (按回溯算法,從123開始一直匹配數(shù)字直到非數(shù)字或結(jié)束,再回溯找6)

  • 最小匹配(又稱惰性匹配)

在量詞范圍內(nèi)盡可能少的匹配內(nèi)容,量詞后面加個(gè)?表示最小匹配。例如:.*?x表示匹配任意字符任意多次,遇到首個(gè)x就停止。

案例

表達(dá)式:\d{3,}?6

目標(biāo):1234789135661947678914

結(jié)果:12347891356(按惰性匹配原則,從123開始一直匹配數(shù)字,一旦遇到6即停止匹配)

注意:2個(gè)??在一起的情況,前一個(gè)?是量詞,表示匹配0或1次;后一個(gè)?表示最小匹配。例如:

1\d?3可以匹配13、123、133中的全部;1\d??3可以匹配13、123、133中的13、123、13(133不能匹配到,按惰性原則1數(shù)字可有可無,再后面找3,)

轉(zhuǎn)義符

若需要使用元字符本身的意義時(shí)需要轉(zhuǎn)義,在元字符前加\即可。

另外有一些有特殊意義的元字符,放在字符組中,會(huì)取消它的特殊意義。例如:

[().*+?] 中括號(hào)中的這些符號(hào)在字符組中會(huì)取消它們的特殊意義。

[a\-c] -在字符組中表示范圍,若不希望它表示范圍,需要用\轉(zhuǎn)義或放在字符組的最前面或最后面。

到此,關(guān)于“web正則表達(dá)式知識(shí)點(diǎn)有哪些”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

web
AI