您好,登錄后才能下訂單哦!
這篇文章主要介紹“web正則表達式知識點有哪些”,在日常操作中,相信很多人在web正則表達式知識點有哪些問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”web正則表達式知識點有哪些”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
正則表達式是一套特殊字符和格式組成的對字符串進行運算的表達式,用表達式對目標字符串從左到右依次匹配,達成檢索、過濾、摘取的目的。
判斷用戶輸入內容是否符合要求。
將用戶輸入的內容與預先定義的表達式比對,若不符合要求則提示用戶重輸。
通過表達式約束輸入的數據可以能夠提高程序效率并減輕服務器壓力。
常見案例如表單驗證等。
從文件中獲取所有符合表達式的內容。
能夠高效的從大段字符串中快速找到符合表達式的內容。
常見案例如日志分析、爬蟲等。
[ ] 一對中括號表示字符組,用來描述一個字符可匹配的規則。
[^] 非字符組,用來描述一個字符不可匹配的規則。
\ 在元字符前加\可用來取消元字符的特殊含義。
\d 匹配數字(小寫d)。
\D 匹配非數字(大寫D)。
\w 匹配數字字母下劃線(小寫w)。
\W 匹配非數字字母下劃線(大寫W)。
\s 匹配空格、制表符、換行符(小寫s)。
\S 匹配非空白符(大寫S)。
\t 匹配制表符(小寫t)。
\n 匹配換行符(小寫n)。
. 匹配除了換行符之外的所有(英文句號.)。
[\d\D]、[\w\W]、[\s\S] 匹配所有字符。
^ 匹配整個字符串的開始,只能寫在開頭,不能寫在中間或后面(在字符組中定義為非的意思)。
$ 匹配整個字符串的結束,只能寫在結尾,不能寫在中間或前面。
| 或,例如a|b表示匹配a或b的內容,若匹配a成功則不會繼續匹配b(所以總是把長的表達式放前面)。
() 分組,約束作用范圍,在python的re模塊中有特殊用處。
\b 匹配單詞的開頭或結尾,例如\bw匹配hello world中的w,o\b匹配hello中的o。
描述的是一個位置上能出現的所有可能性(一對中括號只表示一個字符位置)。案例如下:
[abc]匹配a或b或c。
范圍匹配,可以描述多個范圍,連著寫即可。
[0-9]匹配數字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個符號。
[0-9] -> \d 表示匹配數字 digit。
[0-9a-zA-Z_] -> \w 匹配數字、字母、下劃線 word。
空白符(空格|tab|enter) -> ( |\t|\n) -> \s 表示所有空白符。
量詞用來約束元字符生效次數,量詞只能約束它前面的一個單元,可以是字符、字符組或分組。
{n} 表示匹配n次
{n,} 表示匹配最少n次
{n,m} 表示匹配最少n次、最多m次
? 表示匹配0次或1次 {0,1}
+ 表示匹配1次或多次 {1,}
* 表示0次或多次 {0,}
關于 ? + * 這三個符號經常會用到,請參考下圖,務必要熟記它們的作用域。
最大匹配(又稱貪婪匹配)
在量詞范圍內盡可能多的匹配內容。例如:.*x表示匹配任意字符任意多次,遇到最后一個x才停止。
案例:
表達式:\d{3,}6
目標:1234789135661947678914
結果:12347891356619476 (按回溯算法,從123開始一直匹配數字直到非數字或結束,再回溯找6)
最小匹配(又稱惰性匹配)
在量詞范圍內盡可能少的匹配內容,量詞后面加個?表示最小匹配。例如:.*?x表示匹配任意字符任意多次,遇到首個x就停止。
案例:
表達式:\d{3,}?6
目標:1234789135661947678914
結果:12347891356(按惰性匹配原則,從123開始一直匹配數字,一旦遇到6即停止匹配)
注意:2個??在一起的情況,前一個?是量詞,表示匹配0或1次;后一個?表示最小匹配。例如:
1\d?3可以匹配13、123、133中的全部;1\d??3可以匹配13、123、133中的13、123、13(133不能匹配到,按惰性原則1數字可有可無,再后面找3,)
若需要使用元字符本身的意義時需要轉義,在元字符前加\即可。
另外有一些有特殊意義的元字符,放在字符組中,會取消它的特殊意義。例如:
[().*+?] 中括號中的這些符號在字符組中會取消它們的特殊意義。
[a\-c] -在字符組中表示范圍,若不希望它表示范圍,需要用\轉義或放在字符組的最前面或最后面。
到此,關于“web正則表達式知識點有哪些”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。